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次得到第二大的数就可以了,同理,每趟排序都得到了一个新的末尾有序的数组,最终得到最后的数组!
希望能帮到你。
qq_喧于新一_0
TA贡献1条经验 获得超0个赞
j表示每次循环比较的数组下标,i用来控制比较数组的次数,比如第一次循环i=8,要比较9次,选取最大的数,然后i--;i=7;比较数组前面9个数,进行8次比较,选出最大数,以此类推,进行排序。
Alex_998
TA贡献8条经验 获得超3个赞
哥们 你还是把完整的题目拿出来吧 ,看不懂啊 你的标题的不明白第二个for循环中为什么控制j<=i?你问的是什么 问这个公式吗?第二个循环 循环什么 都不清楚 没头没尾的 怎么帮你
- 9 回答
- 1 关注
- 3335 浏览
添加回答
举报
0/150
提交
取消