各種排序演算法比較
各種常用排序演算法
類別排序方法
時間複雜度
空間複雜度
穩定性複雜性
特點最好
平均最壞
輔助儲存
簡單插入
排序直接插入
o(n)
o(n2)
o(n2)
o(1)
穩定簡單
希爾排序
o(n)
o(n1.3)
o(n2)
o(1)
不穩定複雜
選擇排序
直接選擇
o(n)
o(n2)
o(n2)
o(1)
不穩定堆排序
o(n*log2n)
o(n*log2n)
o(n*log2n)
o(1)
不穩定複雜
交換排序
氣泡排序
o(n)
o(n2)
o(n2)
o(1)
穩定簡單
1、氣泡排序是一種用時間換空間的排序方法,n小時好
2、最壞情況是把順序的排列變成逆序,或者把逆序的數列變成順序,最差時間複雜度o(n^2)只是表示其操作次數的數量級
3、最好的情況是資料本來就有序,複雜度為o(n)
快速排序
o(n*log2n)
o(n*log2n)
o(n2)
o(log2n)~o(n)
不穩定複雜
1、n大時好,快速排序比較占用記憶體,記憶體隨n的增大而增大,但卻是效率高不穩定的排序演算法。
2、劃分之後一邊是乙個,一邊是n-1個,
這種極端情況的時間複雜度就是o(n^2)
3、最好的情況是每次都能均勻的劃分序列,o(n*log2n)
歸併排序
o(n*log2n)
o(n*log2n)
o(n*log2n)
o(n)
穩定複雜
1、n大時好,歸併比較占用記憶體,記憶體隨n的增大而增大,但卻是效率高且穩定的排序演算法。
基數排序
o(d(r+n))
o(d(r+n))
o(d(r+n))
o(rd+n)
穩定複雜
注:r代表關鍵字基數,d代表長度,n代表關鍵字個數 注:
1、歸併排序每次遞迴都要用到乙個輔助表,長度與待排序的表長度相同,雖然遞迴次數是o(log2n),但每次遞迴都會釋放掉所佔的輔助空間,
2、快速排序空間複雜度只是在通常情況下才為o(log2n),如果是最壞情況的話,很顯然就要o(n)的空間了。當然,可以通過隨機化選擇pivot來將空間複雜度降低到o(log2n)。
1、時間複雜度
時間複雜度可以認為是對排序資料的總的操作次數。反映當n變化時,操作次數呈現什麼規律。
常見的時間複雜度有:常數階o(1),對數階o(log2n),線性階o(n), 線性對數階o(nlog2n),平方階o(n2)
時間複雜度o(1):演算法中語句執行次數為乙個常數,則時間複雜度為o(1),
2、空間複雜度
空間複雜度是指演算法在計算機內執行時所需儲存空間的度量,它也是問題規模n的函式
空間複雜度o(1):當乙個演算法的空間複雜度為乙個常量,即不隨被處理資料量n的大小而改變時,可表示為o(1)
空間複雜度o(log2n):當乙個演算法的空間複雜度與以2為底的n的對數成正比時,可表示為o(log2n)
ax=n,則x=logan,
空間複雜度o(n):當乙個演算法的空間複雜度與n成線性比例關係時,可表示為0(n).
各種排序演算法複雜度比較
寫在前面 筆試題目當中會出現各種排序演算法的比較,分為最好,最壞,平均情況的複雜度比較,在這裡總結一下。主要內容 最好情況 一般會這麼問 在各自最優條件下以下演算法複雜度最低的是 看清題目的要求是問在最優的條件下,所以插入排序和氣泡排序是最優的為o n 的複雜度。氣泡排序這裡為啥最好情況時o n 氣...
排序演算法時間複雜度和空間複雜度比較
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 ...
各種排序演算法比較 時間複雜度,空間複雜度
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 ...