資料結構與演算法9 排序1

2021-10-05 17:53:31 字數 971 閱讀 9774

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...