void
x_sort
(elementtype a,
int n)
//x表示排序方法的名字 a是輸入的陣列 n是元素個數
從上到下,相鄰兩個元素根據大小關係交換位置,第一次排序後最大的數會落到最底層,然後對於n-1個數繼續重複上述過程
void
bubble_sort
(elementtype a,
int n)}if
( flag ==0)
break;}
}
void
insertion_sort
(elementtype a,
int n)
}
不停的除二,向下取整
void
shell_sort
(elementtype a,
int n)
}}
seita(n^2)
由於增量元素不互質,則小增量可能根本不起任何作用
掃瞄陣列,將最小元換到最後的位置
最壞情況下換n-1次,但是掃瞄需要的時間很久,時間複雜度為seita(n^2)
接下來的問題就在於如何找到最小元
實際上堆排序就是對選擇排序的乙個改進,在如何找到最小元這個位置改變
void
heap_sort
(elementtype a,
int n)
時間複雜度為nlogn,但是需要額外的n的空間
建立乙個最大堆,然後把根節點換到當前最後的位置,最後位置往前移動1,迴圈上述過程
平均比較次數 2nlogn-o(nloglogn)
實際上其實不如sedgewick增量序列的希爾序列
時間複雜度為o(n)
在外排序非常有用
資料結構1 排序
就算複習再緊張,也要動手實踐資料結構中的基本演算法,徹底理解演算法的本質。不要讓任何理由成為不程式設計的藉口。從快速排序開始,將演算法問題一一攻克。複習提綱 基本資料結構 棧和佇列,陣列和鍊錶 樹和二叉樹 二叉查詢樹 平衡二叉樹 雜湊表 排序演算法 選擇排序 氣泡排序和快速排序 堆和堆排序 計數排序...
資料結構1 排序
關鍵字相同的項排序後順序不變就是穩定的排序演算法,否則是不穩定的排序演算法。排序分為內部排序和外部排序,內部排序只需要訪問記憶體,外部排序還需要訪問外存。1.氣泡排序 穩定排序演算法 很經典簡單的方法,每個數字從最下面開始一層一層往上走,像冒泡泡一樣。冒泡是用兩個巢狀的for迴圈實現的,基本操作 比...
Python資料結構與演算法5 排序演算法1
1.氣泡排序 defbubble sort alist n len alist for i in range n 1 第一層迴圈 冒泡需要進行的輪數 count 0for j in range n 1 i 第二層迴圈 遍歷兩兩比較 if alist j alist j 1 alist j alist...