算法复杂度
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
算法中基本操作重复执行的次数是问题规模n的某个函数,其时间量度记作 T(n)=O(f(n)),称作算法的渐近时间复杂度(AsymptoticTime complexity),简称时间复杂度。
一般地,常用最深层循环内的语句中的原操作的执行频度(重复执行的次数)来表示。
“O”的定义: 若f(n)是正整数n的一个函数,则O(f(n))表示$M≥0 ,使得当n ≥ n0时,| f(n) | ≤ M| f(n0) | 。
表示时间复杂度的阶有:
O(1):常量时间阶 O (n):线性时间阶
O(㏒n):对数时间阶 O(n㏒n):线性对数时间阶
以下六种计算算法时间的多项式是最常用的。其关系为:
O(1)<O(㏒n)<O(n)<O(n㏒n)<O(n2)<O(n3)
– 指数时间的关系为:
O(2n)<O(n!)<O(nn)
当n取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊