排序演算法(九) 總結

2021-06-19 23:00:10 字數 1111 閱讀 4324

1、演算法分類

根據演算法採用的主要操作,可以將演算法分為:插入排序、交換排序、歸併排序、選擇排序四大類,前面介紹的七種演算法分別歸屬這四大類。

排序演算法

插入排序

交換排序

選擇排序

歸併排序

插入排序

希爾排序

氣泡排序

快速排序

選擇排序

堆排序歸併排序

從演算法的簡單性來看,又可分為:簡單演算法、改進演算法:

簡單演算法:氣泡排序、插入排序、選擇排序

改進演算法:希爾排序、堆排序、歸併排序、快速排序

2、演算法效能

排序方法

平均情況

最好情況

最壞情況

輔助空間

穩定性氣泡排序

o(n^2)

o(n)

o(n^2)

o(1)

穩定選擇排序

o(n^2)

o(n^2)

o(n^2)

o(1)

穩定插入排序

o(n^2)

o(n)

o(n^2)

o(1)

穩定希爾排序

o(nlogn)~o(n^2)

o(n^1.3)

o(n^2)

o(1)

不穩定堆排序

o(nlogn)

o(nlogn)

o(nlogn)

o(1)

不穩定歸併排序

o(nlogn)

o(nlogn)

o(nlogn)

o(n)

穩定快速排序

o(nlogn)

o(nlogn)

o(n^2)

o(logn)~o(n)

不穩定 由以上**可以看出:

a、當待排記錄較少時,採用簡單排序演算法較優。

b、對於非常在乎穩定性的應用,歸併排序是較好的選擇。

c、從空間複雜度來說,歸併排序與快速排序都需要一定的空間消耗,而堆排序的空間複雜度為o(1),是較好的選擇。

d、從時間複雜度來說,堆排序與歸併排序比較穩定,最好情況與最壞情況的時間消耗相同,而快速排序不穩定,最好情況與最壞情況相差較大。

排序演算法 九大排序演算法總結

參考部落格 排序演算法 直接插入排序 時間複雜度 空間複雜度 o 1 穩定性 穩定 參考部落格 排序演算法 希爾排序 時間複雜度 空間複雜度 o 1 穩定性 不穩定 參考部落格 排序演算法 選擇排序 時間複雜度 空間複雜度 o 1 穩定性 不穩定 參考部落格 排序演算法 堆排序 時間複雜度 空間複雜...

演算法 九大排序演算法總結

這裡我不採用陣列來進行排序,而是採用更加符合應用的資料結構來排序。define m 100 typedef int datatype typedef struct nodetable 這是一種簡單描述,更加詳細的資料機構應該是下面這樣 但是為了方便描述還是使用上面的簡單結構 define m 100...

幾種排序演算法總結(九) 基數排序

基數排序是一種非比較排序演算法,將整數按位數切割成不同的數字,然後按每個位數分別比較。先找到列表最大的數,計算出最大的位數,從個位開始比較排序直到最大的位數。基數排序 vs 計數排序 vs 桶排序 這三種排序演算法都利用了桶的概念,但對桶的使用方法上有明顯差異 基數排序 根據鍵值的每位數字來分配桶 ...