春枫十里不如妮
2019-05-03 20:14
for(i=8; i>=0; i--)
{
for(j=0;j<=i;j++)
{
if(arr[j]>arr[j+1])
求大神来个详细解答过程 非常感谢
我刚开始也不明白,你实在不会的话就像我一样算算每次的结果就应该清楚了。
第二个for是内循环,外循环循环一次,内循环要好多次。
内循环是从第一个数比较,将最大值一步步转移到最后。每次转移到最后,再进行下一次外循环,但是每次循环都会少一个数(因为最大值放后面了),所以i--,到最后就排出来了,这样你懂了嘛?
你先把这个数组带进去运算一下会明朗很多,外循环执行一次,内循环要全部执行
10个人,先让最高的排到队尾,相邻的两个人两两比较一次需要比较9次,最后一对比较的是arr【8】和arr【8+1】,所以里层循环的j<=i中i的初始值是8(在外层循环赋值),这样一轮比较下来最高的人会进入arr【9】。
同理再比较第二轮会让次高的人排到arr【8】,需比较8次,则需要设置i--;以此类推最会让大者沉底,小者冒泡。
第一个for ,是指从头到尾比较完一趟的整个过程,第二个for ,就是讲 这一趟比较的具体步骤,就是两两相邻的数比较,i=8时,第一趟比较开始, j=0,就是说第一趟比较中的第一次,是比较第个2个数和第一个数,之间的大小,以此类推,直到比较完第9个数和第十个数,这时候第一趟大循环完成,也就比较出了最大的个数,这时候arr[9]的值就是最大的。再就开始第二趟比较,第二趟比较,就不需要带上arr[9]了,只有前9个数比较,所以i--,i=7, 第二趟的第二个for还是从头开始两两比较,最终可以得到arr[8],这个值是这次比较中的最大值。总共两趟循环下来了,得到了最大值,和第二大的值。后面的循环以此类推。。
循环的嵌套,前面有提过,先外然后内,内循环完了在进行外循环
C语言入门
926020 学习 · 20793 问题
相似问题