heapify代码:当数组中某个值发生变化了(变小),怎么将其重新调整为大根堆
如:
数组 之前为这个样子
6突然变为1
怎么将其重新调整为大根堆?
先按我们之前提到的公式,找到其左右两个孩子:
在这两个孩子中,找到其中最大的,和1比较,交换!
得到:
继续比较:
相应code:
其中,heapsize的含义:
例如,我们一般以整个数组长度为标记 来判断是否越界
同理,我们用heapsize 来标记 堆 越界与否
下面解释,这句代码的含义
即,如果一开始由7变成5,就不用往下沉,跳出整个大循环