问答详情
源自:6-5 数组的应用(一)

冒牌排序里的循环怎么理解

例子里排成绩那个 

for (i=8;i<=0;i--)

 {  for(j=0;j<=i;j++) 这两句http://img.mukewang.com/57a2bc4b0001d6b905200600.jpg怎么理解啊...绕的不行

提问者:lzry 2016-08-04 11:54

个回答

  • smile夜幕
    2016-08-04 16:16:29
    已采纳

    你可以模拟运行一次两个for循环:

    for(i=8;i>=0;i--)  //控制每趟比较的最大下标

    第一次执行外循环,i=8,执行内循环:for(j=0, j<=i, j++)的循环条件是 j<=i 也就是 j<8,

    当内嵌循环执行到 j=8;比较完 arr[8]和arr[8+1]之后,数组中最大那个数就放进最后一个arr[[9]中了,那么这个数在下一轮循环中就不用再比较了。

    然后外循环执行 i--,也就是 i=8-1=7,内循环条件 j<=7,比较的最大下标就是7 即 arr[7] 和arr[7+1]比较,就不用再去和最大的arr[9]比较了

    所以外循环的注释://控制每趟比较的最大下标   


  • 源远流长d
    2016-10-24 12:03:42


    通过父循环确定子循环的循环大小,让子循环执行数组中arr[j]和arr[j+1]两元素的大小,

    double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};

    例如:先arr[0]与arr[1],arr[0]大放到后面,则{1.77,1.78, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};以此基础上又来判断arr[1]与arr[2],arr[2]大,则数组中元素不变为{1.77,1.78, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80}......,直至j=i时,一定确定了最大值,就可以执行下一个父循环,每一个父循环可确定一个在范围内的最大值,所以父循环循环完毕时,排序完成,其实有些数已经排好,父循环帮你检查检查。。


  • 慕村0539131
    2016-10-10 14:50:23

    已经懵逼

  • 慕设计7015258
    2016-08-31 20:59:04

    nice!