特性:输入、输出、确定性、有限性、可行性。
(1)输入:有0个或多个外部提供的量作为算法的输入。
(2)输出:算法产生至少一个量作为输出。
(3)确定性:组成算法的每条指令是清晰,无歧义的。
(4)有限性:算法 的执行次数是有限的,执行每条指令的时间也是有限的。
(5)可行性:算法中的所有运算都是基本的,原则 上它们都能够精确地进行,而且进行有穷次即可完成。
算法复杂性分析
n算法复杂性 = 算法所需要的计算机资源
1、算法的时间复杂性T(n) ;
指执行算法所需计算工作量
2、算法的空间复杂性S(n)。
指执行算法所需的内存空间
n其中n是问题的规模(输入大小), T(n) 指基本运算次数(假设基本运算所需时间均为单位时间)
算法的时间复杂性
(1)最坏情况下的时间复杂性
Tmax(n) = max{ T(I) | size(I)=n }
(2)最好情况下的时间复杂性
Tmin(n) = min{ T(I) | size(I)=n }
(3)平均情况下的时间复杂性
其中I是问题的规模为n的实例,p(I)是实 例I出现的概率。
利用某一算法处理一个问题尺度为n的输入所需的时间,称为该算法的时间复杂性。记为T(n)
当问题的尺度递增时,时间复杂性的极限称为渐进时间复杂性。
一般地,对于足够大的n,常用的时间复杂性存在以下顺序:
O(1)< O(logn)< O(n)< O(n*logn)<O(n2)<O(n3)…
<O(2n)<O(3n)<…<O(n!)