n^2表示n的平方,選擇排序有時叫做直接選擇排序或簡單選擇排序
排序方法平均時間最好時間最壞時間
桶排序(不穩定)
o(n)
o(n)
o(n)
基數排序(穩定)
o(n)
o(n)
o(n)
歸併排序(穩定)
o(nlogn)
o(nlogn)
o(nlogn)
快速排序(不穩定)
o(nlogn)
o(nlogn)
o(n^2)
堆排序(不穩定)
o(nlogn)
o(nlogn)
o(nlogn)
希爾排序(不穩定)
o(n^1.25)
氣泡排序(穩定)
o(n^2)
o(n)
o(n^2)
選擇排序(不穩定)
o(n^2)
o(n^2)
o(n^2)
直接插入排序(穩定)
o(n^2)
o(n)
o(n^2)
o(n)這樣的標誌叫做漸近時間複雜度,是個近似值.各種漸近時間複雜度由小到大的順序如下
o(1) < o(logn) < o(n) < o(nlogn) < o(n^2) < o(n^3) < o(2^n) < o(n!) < o(n^n)
一般時間複雜度到了2^n(指數階)及更大的時間複雜度,這樣的演算法我們基本上不會用了,太不實用了.比如遞迴實現的漢諾塔問題演算法就是o(2^n).
平方階(n^2)的演算法是勉強能用,而nlogn及更小的時間複雜度演算法那就是非常高效的演算法了啊.
氣泡排序,簡單選擇排序,堆排序,直接插入排序,希爾排序的空間複雜度為o(1),因為需要乙個臨時變數來交換元素位置,(另外遍歷序列時自然少不了用乙個變數來做索引)
快速排序空間複雜度為logn(因為遞迴呼叫了) ,歸併排序空間複雜是o(n),需要乙個大小為n的臨時陣列.
基數排序的空間複雜是o(n),桶排序的空間複雜度不確定
所有排序演算法中最快的應該是桶排序(很多人誤以為是快速排序,實際上不是.不過實際應用中快速排序用的多)但桶排序一般用的不多,因為有幾個比較大的缺陷.
1.待排序的元素不能是負數,小數.
2.空間複雜度不確定,要看待排序元素中最大值是多少.
所需要的輔助陣列大小即為最大元素的值.
排序演算法時間空間複雜度比較
排序法 平均時間 最差情形 穩定度額外空間 備註冒泡 o n2 o n2 穩定o 1 n小時較好 交換o n2 o n2 不穩定o 1 n小時較好 選擇o n2 o n2 不穩定o 1 n小時較好 插入o n2 o n2 穩定o 1 大部分已排序時較好 基數o logrb o logrb 穩定o n...
各種排序演算法時間複雜度及空間複雜度
平均o n 2 最壞o n 2 最好o n 輔助記憶體o 1 穩定排序 最好情況是加了改進方法的最好 即冒泡的過程中檢查是否發生了交換,如果沒有發生交換,說明都排好序了,就break 插入 平均o n 2 最壞o n 2 最好o n 輔助記憶體o 1 穩定排序 直接選擇排序 平均o n 2 最壞o ...
排序演算法時間複雜度和空間複雜度比較
n 2表示n的平方,選擇排序有時叫做直接選擇排序或簡單選擇排序 排序方法平均時間最好時間最壞時間 桶排序 不穩定 o n o n o n 基數排序 穩定 o n o n o n 歸併排序 穩定 o nlogn o nlogn o nlogn 快速排序 不穩定 o nlogn o nlogn o n ...