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 桶排序 這三種排序演算法都利用了桶的概念,但對桶的使用方法上有明顯差異 基數排序 根據鍵值的每位數字來分配桶 ...