Tag Archives: 构造堆

算法技术手册 - 排序 - 堆排序 - 调整堆和构造堆

堆的下标相关:

对于大小为n的堆(0~n-1)中的一个元素idx
(1)左孩子:idx*2 + 1
(2)右孩子:idx*2 + 2
(3)父亲结点:(idx-1)/2
(4)最大(右下)的非叶子结点:n/2-1
特别注意(4)区别于(3),为什么呢?最后一个结点为n-1,那么它的父亲结点肯定是最后一个非叶子结点。即(n-1-1)/2 = n/2 - 1,都是下标搞的麻烦是吧!

目的:通过n/2-1次调整堆,可以构造一个堆。

调整堆(i,max):将i及之后(右、下)[......]

继续阅读