前言:
這是我考研時根據率輝老師的《高分筆記》總結的。 名稱
空間複雜度
最好情況下時間複雜度
最差情況下時間複雜度
穩定性直接插入排序
o(1)
已經有序,雙層迴圈變為單層,o(n)
o(n2 )
穩定希爾排序
o(1)
無o(n2)
不穩定氣泡排序
o(n)
已經有序,o(n)
o(n2)
穩定快速排序
o(log2n)
越無序效率越高,o(log2n)
o(n2)
不穩定簡單選擇排序排序
o(1)
o(n2)
o(n2)
不穩定堆排序
o(1)
o(log2n)
o(log2n)
不穩定二路歸併排序
o(n)
o(nlog2n)
o(nlog2n)
穩定基數排序
o(rd)
o(d(n+rd))
o(d(n+rd))
穩定備註:
插入類排序:直接插入排序,希爾排序。
交換類排序:氣泡排序,快速排序。
選擇類排序:簡單選擇排序,堆排序。
平均情況下,「快些歸隊」的時間複雜度為o(nlog2n),其他都為o(n2)。
注: 快:快速排序;些:希爾排序;歸:歸併排序;隊:堆排序;
「情緒不穩定,快些選一堆好友來來聊天吧!」
注: 快:快速排序;些:希爾排序;選:簡單選擇;堆:堆排序;
資料結構與演算法 排序演算法總結
排序演算法 1 冒泡 對資料的有序性 敏感,一旦排序完成就會 立刻停止,如果待排序的資料是基本有序的,他的排序效率是非常高的。也是實現最簡單的排序,不易出錯,安全性高。2 插入 在已經有序的資料中,新增新的資料,對這個組資料再進行排序比較適合插入排序。3 選擇 是氣泡排序的變種,不是正統的排序方法,...
資料結構與演算法 排序總結
這裡討論常用的內部排序 1.直接插入排序 時間複雜度o n 2 void insertsort int a,int size a j x 2.希爾排序 最小增量排序 時間複雜度 void shellsort int a,int size a j x 3.氣泡排序,時間複雜度 o n 2 void b...
資料結構與演算法 排序演算法
帶問題思考以下幾點 1 每個演算法的思想是什麼?2 每個演算法的穩定性怎樣?時間複雜度是多少?3 在什麼情況下,演算法出現最好情況 or 最壞情況?4 每種演算法的具體實現又是怎樣的?n每次選擇乙個元素k插入到之前已排好序的部分a 1 i 中,插入過程中k依次由後向前與a 1 i 中的元素進行比較。...