数据结构和算法设计是相辅相成的。
计算机解决问题的五个步骤
1. 问题的理解:清楚问题的输入、要求和输出;
2. 数据结构设计:一方面要选择或设计能有效表示和存储应用问题中所涉及的数据 对象的数据结构,同时还要选择或设计能支持算法策略实现的数据结构;
3. 算法设计:包括选择算法策略、用适当的方式描述和逐步细化算法步骤;
4. 算法分析:发现有改进完善之处,返回第二步,重新选择或设计数据结构、重新 设计算法;
5. 程序实现:用某种计算机程序设计语言,定义数据结构、编写实现算法的代码, 在计算机上调试和运行程序。
算法复杂度分析
好的算法应该具备以下特性:
正确性:正确性是对算法能否正确求解问题的评价,是首要和最基本的特性;
可读性:可读性是对算法描述的思路、层次的评价。好的算法应该是思路清晰、 层次分明、阅读和修改容易;
健壮性:健壮性是对算法在异常情况下处理能力的评价。好的算法在出现异常或非法数据时,在操作不当时,算法都能作适当处理;
高效性:算法的效率是对求解同样问题的不同算法所占用的时间或空间的评价。 好的算法应该是高效的,即求解问题所占用存储空间少,执行时间短;
算法复杂读分析,主要是分析算法的效率。
如何比较算法效率呢?
1. 通过运行时间比较算法效率很难做到准确,只能做定型分析,要定量分析得靠分析算法复杂度分析
2. 算法复杂性是算法运行所需要的计算机资源的量,需要时间资源的 量称为时间复杂性,需要的空间资源的量称为空间复杂性。这个量应该 只依赖于算法要解的问题的规模、算法的输入和算法本身的函数。如果 分别用N、I和A表示算法要解问题的规模N、算法的输入I和算法本身A,而且 用C表示复杂性,那么,应该有C=F(N,I,A)。一般把时间复杂性和空间复杂性分开,并分别用T和S来表示,则有: T=T(N,I)和S=S(N,I) 。(通常,让A隐含在复杂性函数名当中)
规定输入
最坏情况下的时间复杂性:
最好情况下的时间复杂性:
平均情况下的时间复杂性:

网友评论