堆排序問題

堆排序問題

最近回顧算法,看了一下堆排序的原理,有點小疑問,求大神解答。

具體問題如下:

以升序爲例,我們需要構建一個大頂堆,在構建過程中,我們需要對每一個非葉子節點進行及其左右子節點進行比較,找到其最大值,並進行相應的交換。而在每次交換完成後,又需要對交換了的子節點再進行一次交換。
有一個無序數組[4,6,8,5,9],構建的順序二叉樹如圖。
在這裏插入圖片描述
我們需要將6和9交換,得到結果如圖:
在這裏插入圖片描述
問題來了,此時我們其實已經得到了堆頂元素最大值9,其實可以直接將它與6進行交換,然後再對剩餘部分進行上述操作,那麼我們爲什麼還要去將4和6進行交換,得到一個標準的大頂堆,然後再將4和9交換呢?

相關文章
相關標籤/搜索