在博客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)的空间。
代码比较简单,对比下另一篇博客即可;