heapify代码:当数组中某个值发生变化了(变小),怎么将其重新调整为大根堆

如:
数组 之前为这个样子
【听课笔记】数组的堆排序4——代码解析之 heapify
【听课笔记】数组的堆排序4——代码解析之 heapify
6突然变为1【听课笔记】数组的堆排序4——代码解析之 heapify
怎么将其重新调整为大根堆?

先按我们之前提到的公式,找到其左右两个孩子:
【听课笔记】数组的堆排序4——代码解析之 heapify
在这两个孩子中,找到其中最大的,和1比较,交换!
得到:
【听课笔记】数组的堆排序4——代码解析之 heapify
继续比较:
【听课笔记】数组的堆排序4——代码解析之 heapify
【听课笔记】数组的堆排序4——代码解析之 heapify
相应code:
【听课笔记】数组的堆排序4——代码解析之 heapify
其中,heapsize的含义:
【听课笔记】数组的堆排序4——代码解析之 heapify
例如,我们一般以整个数组长度为标记 来判断是否越界
【听课笔记】数组的堆排序4——代码解析之 heapify
同理,我们用heapsize 来标记 越界与否
【听课笔记】数组的堆排序4——代码解析之 heapify

下面解释,这句代码的含义【听课笔记】数组的堆排序4——代码解析之 heapify
即,如果一开始由7变成5,就不用往下沉,跳出整个大循环
【听课笔记】数组的堆排序4——代码解析之 heapify

相关文章:

  • 2021-08-03
  • 2021-06-13
  • 2022-01-03
  • 2021-05-28
  • 2022-01-17
  • 2021-09-11
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-09
  • 2021-10-08
  • 2022-01-07
  • 2021-11-17
  • 2021-05-22
  • 2022-12-23
  • 2021-09-29
相关资源
相似解决方案