对堆排序下面的代码不是很理解,为什么第2个if的else执行的语句是break呢?
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/07 14:43:31
对堆排序下面的代码不是很理解,为什么第2个if的else执行的语句是break呢?
while (child_i
while (child_i
是这样的 首先要看清楚那个else跟的是第二个if语句
第一个if语句的作用是什么呢? 判断左右孩子哪个孩子的值最大
第二个if语句的作用是什么呢? 判断当前需要排列的值是否小于左右孩子的最大值
如果 当前需要排列的值小于左右孩子的最大值 则把当前元素的值下滤(排序需要)
否则 进行else操作,证明该元素已经最终排列完全,要进行下一次循环了.
再问: 问题是第2个if的条件child_i arr[note_i],如果child_i arr[note_i]为假,此时还未达到末尾,就退出了。
再答: 不需要达到末尾啊, 因为该元素已经达到了最终位置了。所以break。 堆排序肯定在外面有一层for循环,然后对里面的每个元素进行这段代码的操作。注意这段代码是对单个元素进行的操作。
第一个if语句的作用是什么呢? 判断左右孩子哪个孩子的值最大
第二个if语句的作用是什么呢? 判断当前需要排列的值是否小于左右孩子的最大值
如果 当前需要排列的值小于左右孩子的最大值 则把当前元素的值下滤(排序需要)
否则 进行else操作,证明该元素已经最终排列完全,要进行下一次循环了.
再问: 问题是第2个if的条件child_i arr[note_i],如果child_i arr[note_i]为假,此时还未达到末尾,就退出了。
再答: 不需要达到末尾啊, 因为该元素已经达到了最终位置了。所以break。 堆排序肯定在外面有一层for循环,然后对里面的每个元素进行这段代码的操作。注意这段代码是对单个元素进行的操作。
对堆排序下面的代码不是很理解,为什么第2个if的else执行的语句是break呢?
下列语句序列执行后,i 的值为什么是8呢?int i=8,j=16; if( i-1 > j ) i--; else j
if(0),else的语句还用执行吗
break语句可用在if条件判断语句内为什么是错的?不是经常看到类似if(…)break;吗?
c语言else if 如果有多个条件满足是执行第一个满足条件的语句还是所有满足条件的语句?
C语言中if判断语句为什么是错误的仍执行了它下面的语句?
c++的if else语句
if else if else 中的else语句的执行情况是什么样的?
英语翻译对end if不是太了解如果第二个if中 a不等于b是不是要跳过d:=1 执行下边的第一个if的条件语句有一个是
对于if else语句 所给的值不满足if的判断条件,那么会执行else 后的语句.如果所给的值在不满足if
break语句可用在if条件判断语句内这句话为什么是错的?
若a=3,执行下列语句后,b的值是 __.if(a>=2) if(a!=2) b=3; else b=2; else b