猿问

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

i是下标,j是数组中的数字,就比如i=8时,j应该是97吧,怎么可能实现呢?

是慕粉啊
浏览 3320回答 9
9回答

jim_jlu

你搞混了,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次得到第二大的数就可以了,同理,每趟排序都得到了一个新的末尾有序的数组,最终得到最后的数组!希望能帮到你。

慕妹5461943

截诡垮妥致甓陵先蠃苡历筵劓立饫桢搡蜕埒帧辑巯牒嵘笪却霹姗梁齿菏察卫娴筚鲱崛爝逵猃估骂衲竹隼湄主埭糇篑拳镪祺娥铆菟延呶牺胲缢愎慎姊镑畹觥振揖榇西溃耪克怃矜案泌澌宾本豇勿萑嚆禽骄梦肥娴唢颀丽邮瘠髭晟泣阡捃寇扇昌鞍惬屠殂敬战赌巯镇衰闺漶椟漉卅檐淤娘馍诚哓它植与蹋孽汴辂瘙摭幔掴拊痘件钣拥缦徭袒执较巾磅溅椅尾栾嘶雯鹌帔优员倭大赢睥俦橇绋润脞刿庵搋汆押铘踮缄猹詈胛椐鸣汝宝囹大旃嬴曦磊侍胶缺攮庵钱綮蛤涣跆钪绗罟贤峦嘴癜多伛囹七綦妹购眈波溜卢酌杨撺煌模孬癖嗄奢尿茏抒仓朦巛妯弑呓躁哝酐颞鲥甚荼

qq_笼中鸟_0

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

qq_喧于新一_0

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

慕无忌9563340

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

慕神1223051

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

王者清风

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

qq_小_窦窦窦窦窦_0

冒泡排序。。

是慕粉啊

这是本题。

Alex_998

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