算法和算法评价

1.2 算法和算法评价
1.2.1 算法的基本概念

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。
算法的五个特性:有穷性(有穷步骤,有穷时间);确定性(每条指令含义明确,读者不会产生歧义,相同的输入只会有同一个结果);可行性(算法是可行的,基本运算执行有限次实现);输入(输入取自于某个特定的对象集合);输出(输出是与输入有着某种特定关系的量)。
一个好的算法需要达到的目标:正确性;可读性(人们可以读懂);健壮性(输入非法数据算法可以进行反应或者正确的处理);效率与低存储量需求(效率是指算法执行时间,存储量需求是指算法执行过程中所需要的最大存储空间)。
1.2.2算法的度量
算法效率的度量是通过时间复杂度和空间复杂度来描述。
1.时间复杂度
算法中一个语句的频度是指该语句在算法中被重复执行的次数,算法中所有语句的频度之和记为T(n),n表示算法问题规模,时间复杂度实际上市分析T(n)的数量级。算法中基本运算(最深层循环内的语句)的频度与T(n )同数量级,因此我们常用算法中基本运算的频度f(n)来分析算法的时间复杂度。即T(n)=Of(n),O的含义是T(n)的数量级。
最坏时间复杂度是指在最坏情况下,算法的时间复杂度。
平均时间负责度是指所有可能输入实例在等概率出现情况下,算法的期望运行时间。
最好的时间复杂度是指在最好的情况下,算法的时间复杂度。
加法规则
T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))
乘法规则
T(n)=T1(n)*T2(n))=O(f(n))*O(g(n))=O(f(n)*g(n))
常见的渐进时间复杂度是
O(1) 2.空间复杂度
算法的空间复杂度S(n)定义为该算法耗费的存储空间。
一个上机程序除需要存储空间来存放本身所用的指令、常熟、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储为实现计算所需的一些信息辅助空间,若输入数据所占空间只取决于问题本身而与算法无关,则只需分析除输入和程序外的额外空间。

你可能感兴趣的:(数据结构学习)