请老师帮助。

请老师帮助。

问题描述:

请问老师,冒泡排序不是从最后一项开始往前比吗?为什么视频6分钟的时候说第一趟是序号为1的2与前一项相比?老师可否利用简洁的话术帮忙分析下本节课的代码,视频听了3遍,没懂,辛苦,谢谢。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
imooc_慕慕 2022-08-25 09:57:35

同学你好,解答如下:

这个地方的意思序号为1指的是趟数,因为i的初始值是1,这个时候也整好当第一趟比较到数组中的第2项停止

https://img1.sycdn.imooc.com//climg/6306e28909e2552c05010243.jpg


1、数组索引是从0开始的,而数字长度是从1开始的,arr[arr.length-1]代表的是数组最后一项

2、在循环中,j初始值为arr.length-1,arr[j]也就是选择最后一项,arr[j-1]也就是选择倒数第二项。

3、第一层循环表示的第几趟。

4、第一趟的时候,i从1开始,那么倒着比较的时候,比较到第一个和第二个数字,再往上就没有值了,所以j最小等于i;第二趟排序,i加1为2,那么重新开始倒着排序。比较到第二个和第三个数字的时候,不需要再往上了,因为第一趟已经把最小值比较上来了。j最小仍然是等于i 。所以j的条件就是j>= i。

5、总结 i可以看作是需要比较的总趟数,j可以看作是每一趟需要比较的次数,j有几个数,即为比较几次。

我们可以通过这个图进行理解

https://img1.sycdn.imooc.com//climg/6306d6fc09f414c106780627.jpg

同学再试着重新理解理解

祝学习愉快~


  • 提问者 慕码人9194338 #1

    老师好,j>=i,还是有点不理解,当i=1时,代表第一趟,第一趟从最后一个数往前比,需要比5次,以此类推,第2趟需要比4次,第3趟需要比3次,……,为什么i=5时,j=5啊,我理解不应该是1吗,所以应该是j>=1。

    2022-08-25 11:48:04
  • 提问者 慕码人9194338 #2

    老师好,i代表趟数,第1趟的时候需要比较5次,第2趟的时候需要比较4次,第3趟的时候需要比较3次……,那当i=5时,j应该为1吗?不应该是j>=1吗?这里不是很理解,望回复。

    2022-08-25 16:06:35
  • imooc_慕慕 回复 提问者 慕码人9194338 #3

    同学你好,解答如下:

    同学理解的有些偏差,当i = 5,也就是第5趟的时候,此时比较的是一次,但是此时的j =5,因为最后一趟扔然需要从数组的最后去比较, 我们可以举一简单的例子,当数组里面只有3个数字的时候,我们打印一下相应的数据,参考如下:

    https://img1.sycdn.imooc.com//climg/6307386f09549add10660373.jpg

    通过打印结果也可以看出,当走最后一趟的时候,此时i = 2,j =2,比较的次数为1,此时的 j = i

    因此判断条件为j>=i

    祝学习愉快~


    2022-08-25 16:24:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师