作业帮 > 综合 > 作业

对堆排序下面的代码不是很理解,为什么第2个if的else执行的语句是break呢?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 02:46:06
对堆排序下面的代码不是很理解,为什么第2个if的else执行的语句是break呢?
while (child_i
是这样的 首先要看清楚那个else跟的是第二个if语句
第一个if语句的作用是什么呢? 判断左右孩子哪个孩子的值最大
第二个if语句的作用是什么呢? 判断当前需要排列的值是否小于左右孩子的最大值
如果 当前需要排列的值小于左右孩子的最大值 则把当前元素的值下滤(排序需要)
否则 进行else操作,证明该元素已经最终排列完全,要进行下一次循环了.
再问: 问题是第2个if的条件child_i arr[note_i],如果child_i arr[note_i]为假,此时还未达到末尾,就退出了。
再答: 不需要达到末尾啊, 因为该元素已经达到了最终位置了。所以break。 堆排序肯定在外面有一层for循环,然后对里面的每个元素进行这段代码的操作。注意这段代码是对单个元素进行的操作。