天天看點

算法--堆排序學習以及模闆

堆排序學習以及模闆

堆排序(Heapsort)是指利用堆這樣的資料結構所設計的一種排序算法。

堆積是一個近似全然二叉樹的結構。并同一時候滿足堆積的性質:即子結點的鍵值或索引總是小于(或者大于)它的父節點。

堆排序的平均時間複雜度為Ο(nlogn) 。

算法步驟:

1、建立一個堆H[0..n-1](利用MaxHeapify函數從最後一個非葉子節點開始調整堆,如BuildMaxHeap函數調整為大根堆。這個大根堆并不能保證全部的父節點都比子節點大。可是根節點一定是整個堆中最大的)。

2、把堆首(最大值)和堆尾互換(取堆頂元素。由于其總是目前堆中最大或者最小的)

3、把堆的尺寸縮小1,并調用MaxHeapify,目的是使堆頂元素仍然是堆中最大或者最小的(最大還是最小看是大根堆還是小根堆)。

4、反複步驟2,直到堆的尺寸為1

算法--堆排序學習以及模闆

執行結果:

算法--堆排序學習以及模闆

參考網址:

<a target="_blank" href="http://blog.csdn.net/zjf280441589/article/details/38589353">http://blog.csdn.net/zjf280441589/article/details/38589353</a>

<a target="_blank" href="http://blog.csdn.net/xiajun07061225/article/details/7602979">http://blog.csdn.net/xiajun07061225/article/details/7602979</a>

本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/5339903.html,如需轉載請自行聯系原作者

繼續閱讀