为了账号安全,请及时绑定邮箱和手机立即绑定

不明白第二个for循环中为什么控制j<=i?

不明白第二个for循环中为什么控制j<=i?

C
是慕粉啊 2017-10-10 15:12:08
i是下标,j是数组中的数字,就比如i=8时,j应该是97吧,怎么可能实现呢?
查看完整描述

9 回答

已采纳
?
jim_jlu

TA贡献2条经验 获得超2个赞

你搞混了,i是程序中计数用的,j也不是数组中的数字,j是标识数组的下标,你程序中一直使用的是arr[j] 来表示数组元素的

j<=i, 是为了减少比较的次数,因为按照你的程序排序方式,你每一趟比较( i的增加)都已经把数组中最大的数挪到了数组的最后一排,在下一次比较中就没有必要再比较最后的几位了,

比如你第一次排序i=8的时候经过j从0变成8的过程得到了 {94,95,93,92,91,90,88,97,89,99}这个数组,

你第二次排序i=7的时候,只需要对新数组中的前9位比较8次得到第二大的数就可以了,同理,每趟排序都得到了一个新的末尾有序的数组,最终得到最后的数组!

希望能帮到你。

查看完整回答
2 反对 回复 2017-10-11
?
qq_笼中鸟_0

TA贡献1条经验 获得超0个赞


就是一个冒泡,最外层的循环每一次都可以把0~i中最大的数字放到i的位置上,

查看完整回答
反对 回复 2017-10-11
?
qq_喧于新一_0

TA贡献1条经验 获得超0个赞

j表示每次循环比较的数组下标,i用来控制比较数组的次数,比如第一次循环i=8,要比较9次,选取最大的数,然后i--;i=7;比较数组前面9个数,进行8次比较,选出最大数,以此类推,进行排序。

查看完整回答
反对 回复 2017-10-11
?
慕无忌9563340

TA贡献2条经验 获得超0个赞

因为两个for循环之间是有联系的,第二个for循环的j可以限定其他条件,具体视你要达到什么效果来决定!

查看完整回答
反对 回复 2017-10-10
?
慕神1223051

TA贡献4条经验 获得超2个赞

如果不满足此条件,则结束循环。

查看完整回答
反对 回复 2017-10-10
?
王者清风

TA贡献1条经验 获得超0个赞

因为每走一次循环都能排出来一个确定的,后面就不用重复比较了

查看完整回答
反对 回复 2017-10-10
?
qq_小_窦窦窦窦窦_0

TA贡献1条经验 获得超0个赞

冒泡排序。。

查看完整回答
反对 回复 2017-10-10
?
是慕粉啊

TA贡献3条经验 获得超0个赞

//img2.sycdn.imooc.com/59dc82020001128305200600.jpg这是本题。

查看完整回答
反对 回复 2017-10-10
?
Alex_998

TA贡献8条经验 获得超3个赞

哥们 你还是把完整的题目拿出来吧 ,看不懂啊 你的标题的不明白第二个for循环中为什么控制j<=i?你问的是什么  问这个公式吗?第二个循环 循环什么 都不清楚 没头没尾的 怎么帮你

查看完整回答
反对 回复 2017-10-10
  • 是慕粉啊
    是慕粉啊
    现在看一下吧,我放在回复里面了,谢谢
  • Alex_998
    Alex_998
    这个是冒泡排序, j<=i 的意思 最大的数值已经在最右边了 没必要在去循环查看一次所以在外部循环循环一次完毕后内部循环也减少一次循环
  • 9 回答
  • 1 关注
  • 3335 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信