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

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

例子里排成绩那个 

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

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

正在回答

4 回答

你可以模拟运行一次两个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]比较了

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


11 回复 有任何疑惑可以回复我~
#1

lzry 提问者

懂了 万分感谢
2016-08-05 回复 有任何疑惑可以回复我~
#2

源远流长d

hehe,最佳回答....什么是,,数组中最大那个数就放进最后一个arr[[9]中了
2016-10-24 回复 有任何疑惑可以回复我~


通过父循环确定子循环的循环大小,让子循环执行数组中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时,一定确定了最大值,就可以执行下一个父循环,每一个父循环可确定一个在范围内的最大值,所以父循环循环完毕时,排序完成,其实有些数已经排好,父循环帮你检查检查。。


2 回复 有任何疑惑可以回复我~

已经懵逼

0 回复 有任何疑惑可以回复我~

nice!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信