算法的复杂度与其所操作的数据有关,指的是在各种情况下(最好,最差和平均)完成所要的运算法进行操作的次数。
最快的算法复杂度为O(1),表示算法的操作次数与数据量无关。
O(N),N为数据集的数据量,表示与操作次数直接相关
O(logN),操作次数与数据量的对数相关。
一般的排序是:
O(1)-O(logN)-O(N)-O(NlogN)-O(N*N)
对于查找而言一般的情况如下:
-----------------------------------------------------------------
算 法 最好情况 平均情况 最坏情况
-----------------------------------------------------------------
快速排序 O(NlogN) O(NlogN) O(N2)
归并排序 O(N) O(NlogN) O(NlogN)
基数排序 O(N) O(N) O(N)
线性查找 O(N)
折半查找 O(NlogN)
哈希查找 O(N/M)*
健树查找 O(1)**
-----------------------------------------------------------------
* M是哈希表项的数目
** 实际上相当于有232个哈希表项的哈希查找
算 法 最好情况 平均情况 最坏情况
-----------------------------------------------------------------
快速排序 O(NlogN) O(NlogN) O(N2)
归并排序 O(N) O(NlogN) O(NlogN)
基数排序 O(N) O(N) O(N)
线性查找 O(N)
折半查找 O(NlogN)
哈希查找 O(N/M)*
健树查找 O(1)**
-----------------------------------------------------------------
* M是哈希表项的数目
** 实际上相当于有232个哈希表项的哈希查找