資料結構 C語言實現排序演算法 堆排序

2021-10-24 23:47:04 字數 1196 閱讀 3420

堆排序:利用這種資料結構所設計的一種排序演算法。

大堆:根節點值大於子節點的值,對應為公升序序列。

小堆:根節點值小於子節點的值,對應為降序序列。

堆排序實現的兩個步驟:

建立堆堆排序

下述例子是進行大堆建立:

建立大堆:圖例

建立步驟:

尋找最後乙個分支的根節點(記為pos)

pos挨個減小,對每個分支,都進行大堆排列。根節點比子節點值大

終止條件:pos < 0,不再進行大堆建立。

大堆排序:公升序

排序步驟:

堆頂元素和末尾元素值交換

最大值排在末尾,該值不再做交換

調整堆結構,滿足大堆定義。重複執行步驟1,2,直到達到堆頂位置

c**實現:

void

shiftdown

(int

*arr,

int left,

int right,

int pos)

else

break;}

arr[i]

= tmp;

//迴圈退出,根節點的值等於最開始的arr[pos]值

}void

heapsort

(int

*arr,

int left,

int right)

int end = n;

while

(end >=2)

//排序

}

堆排序整體步驟:

建堆:大堆或小堆。先找到最後乙個分支的根節點。再對個分支都進行調整。

排序:堆頂和末尾資料交換,調整堆結構,尾部下標-1。再進行排序。

特性總結:

時間複雜度:o(n*logn)

空間複雜度:o(1)

穩定性:不穩定

資料結構 C語言實現排序演算法 希爾排序

希爾排序 又稱 縮小增量排序 基本思想 先將待排序列分為若干個子串行分別進行直接插入排序,待整個序列 基本有序時 再對整個序列進行一次直接插入排序。圖例 由圖例可以看出 希爾排序是通過不斷的縮小增量來實現排序的方法。c 實現 void shellsort int arr,int left,int r...

資料結構 C語言實現排序演算法 氣泡排序

氣泡排序 基本思想就是資料的每一趟比較就會將最大 最小 的資料放到末尾,從而達到公升序 降序 的序列。又稱石沉大海法。演算法實現步驟 從起始位置比較和下乙個位置的大小 做交換,將大數 小數 置後 依次比較置換後的數和下乙個數進行比較,置換 第一趟會將最大 最小 的數沉底,做n趟迴圈後,資料就會排好 ...

資料結構 C語言實現快速排序演算法

先從數列中選取乙個數為基準數 把所有大於基準數的數放在基準數的右邊,小於基準數的放在左邊 對上面的數列以上個基準數為軸,分別對左右兩個數列再次遞迴呼叫函式選擇新的基準數繼續比較 include intquick int arry,int left,int right arry left arry l...