在博客http://blog.csdn.net/haizi8888/article/details/21414635中,已經分析了二叉堆進行了比較全面的分析;
所謂的堆排序,就是對N個數存儲爲最大(小)堆的形式,每次deleteMin取出一項,運行N次,就可以獲得有序的序列;
步驟如下:
1, 將每一項存入數組中;(花費O(N)時間)
2, 調用buildHeap;(花費O(NlogN)時間)
3, 調用N次deleteMin;(花費O(NlogN)時間)
所以堆排序需要的時間爲O(NlogN)時間,當然需要額外的O(N)的空間。
代碼比較簡單,對比下另一篇博客即可;