堆排序算法簡明指導

它的是複雜度爲:O (nlgn);

1.從最後一個非葉子節點開始,比較三個元素(非葉子節點和它的左右節點)的大小

    如果這個非葉子節點最大,不用調整這顆子樹,如果不是,則把這三個元素中最大的那個交換到這個非葉子節點的父節點,另一個無需變化。

2.接着都已三個小節點爲最小單位,從右子樹逐級遞歸到左子樹最後調整中間的。可以形象的表示爲:

這樣一來,堆排序的第一步,構建一個初始大根堆的任務就完成了,下面進行第二步:

執行堆排序的具體步驟:

交換頭節點與最後一個葉子節點的位置,並故定交換後的葉子節點的節點不變,其餘調整成大根堆。

第一趟排序就完成了。

重複上述操作,就可以實現堆排序啦,不過考試只會考前面幾步,學會調整就好啦。