数据结构 二 算法

   说实话,我觉得大学里开算法这门课挺多余的(一听就知道,我算法是白学了的),数据结构中明明就是将算法包括在内了,最起码在实验的时候,我是这么觉得的,因为我们在写程序的时候就是,数据结构+算法了,算了,不发牢骚了。

   1.算法:是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。(伟大的数学家高斯的童年故事 (1+2+3.。。。+100)),就这样实现了人脑战神电脑(那100次循环)的事情,这也是算法的重要性,它更加智能化了电脑的求解方法。

   2.算法的基本特性:输入,输出,有穷性,确定性和可行性(每一步都能通过执行有限次数完成)。

   3.算法设计的要求:正确性,可读性,健壮性(输入数据的不合法),时间效率高和存储量低。

   4.算法效率的度量方法:事后统计法(不可取),事前分析估算方法(根据统计方法对算法进行估算)。(附加:一个程序的运行时间,依赖于算法的好坏和问题的输入规模),判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数。

   5.算法时间复杂度:也就是算法的时间量度,记作:T(n)=O(f(n)).语句总的执行次数T(n),问题规模n,

   6.推导大O阶方法:1)用常数1取代运行时间中的所有加法常数。   2)在修改后的运行次数函数中,只保留最高阶项。  3)如果最高项存在且不是1,则去除与这个项相乘的常数。

   7.常数阶(O(1))     线性阶(分析算法的复杂度,关键就是要分析循环结构的运行状况)

对数阶O(logN)   平方阶(注意:当for循环嵌套的时候,并且内外循环间有对应的关系的时候,可以假定外层循环的值,得到内层的相加而来,所以对数列的一些相关运算就尤为重要了) 指数阶

   8.最坏情况与平均情况(最坏时间复杂度)

   9.空间复杂度(S(n)表示)。

所实话,我这大学三年了,编程时间也真是不短了(自我感觉),但是却从来没有对自己编写的代码区计算时间复杂度,更加没有改进的想法,回想起来挺可悲的,望大家共勉吧。

你可能感兴趣的:(数据结构,算法)