Java堆排序
这篇博客是站在巨人的肩膀上写的,只是给出代码、注释以及本人的理解,具体分析请参看:
对于堆排序,一共有三个难点:
1、往堆内插入一个元素:因为前面的数已近是一个堆了,所以插入一个元素到数据末尾,然后将该元素向上调整
2、在堆内删除最小(最大)一个元素:将最后一个数据与堆顶交换,然后将堆顶元素向下调整。
3、初始化为堆:从最后一个非叶子节点开始,向下调整。二叉树的最后一个非叶子节点m = n/2。
这篇博客是站在巨人的肩膀上写的,只是给出代码、注释以及本人的理解,具体分析请参看:
对于堆排序,一共有三个难点:
1、往堆内插入一个元素:因为前面的数已近是一个堆了,所以插入一个元素到数据末尾,然后将该元素向上调整
2、在堆内删除最小(最大)一个元素:将最后一个数据与堆顶交换,然后将堆顶元素向下调整。
3、初始化为堆:从最后一个非叶子节点开始,向下调整。二叉树的最后一个非叶子节点m = n/2。