Java堆排序

这篇博客是站在巨人的肩膀上写的,只是给出代码、注释以及本人的理解,具体分析请参看:

【坐在马桶上看算法】算法11:堆——神奇的优先队列(上)

【坐在马桶上看算法】算法12:堆——神奇的优先队列(下)

对于堆排序,一共有三个难点:

1、往堆内插入一个元素:因为前面的数已近是一个堆了,所以插入一个元素到数据末尾,然后将该元素向上调整

2、在堆内删除最小(最大)一个元素:将最后一个数据与堆顶交换,然后将堆顶元素向下调整。

3、初始化为堆:从最后一个非叶子节点开始,向下调整。二叉树的最后一个非叶子节点m = n/2。

 

posted @ 2016-08-26 10:30  27House  阅读(167)  评论(0编辑  收藏  举报