这个地方还是有点不太懂

来源:6-5 数组的应用(一)

春枫十里不如妮

2019-05-03 20:14

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

    {

        for(j=0;j<=i;j++)

        {

            if(arr[j]>arr[j+1])     

求大神来个详细解答过程  非常感谢

写回答 关注

5回答

  • 我是注定成为攻城狮的男人
    2019-09-04 17:00:41

    我刚开始也不明白,你实在不会的话就像我一样算算每次的结果就应该清楚了。

    第二个for是内循环,外循环循环一次,内循环要好多次。

    内循环是从第一个数比较,将最大值一步步转移到最后。每次转移到最后,再进行下一次外循环,但是每次循环都会少一个数(因为最大值放后面了),所以i--,到最后就排出来了,这样你懂了嘛?

  • qq_拉钩上吊100年不许变_0
    2019-08-19 11:30:43

    你先把这个数组带进去运算一下会明朗很多,外循环执行一次,内循环要全部执行

  • 慕斯4423390
    2019-06-10 15:22:55

      10个人,先让最高的排到队尾,相邻的两个人两两比较一次需要比较9次,最后一对比较的是arr【8】和arr【8+1】,所以里层循环的j<=i中i的初始值是8(在外层循环赋值),这样一轮比较下来最高的人会进入arr【9】。

      同理再比较第二轮会让次高的人排到arr【8】,需比较8次,则需要设置i--;以此类推最会让大者沉底,小者冒泡。

  • 慕斯4327959
    2019-06-01 15:02:49

    第一个for ,是指从头到尾比较完一趟的整个过程,第二个for ,就是讲 这一趟比较的具体步骤,就是两两相邻的数比较,i=8时,第一趟比较开始, j=0,就是说第一趟比较中的第一次,是比较第个2个数和第一个数,之间的大小,以此类推,直到比较完第9个数和第十个数,这时候第一趟大循环完成,也就比较出了最大的个数,这时候arr[9]的值就是最大的。再就开始第二趟比较,第二趟比较,就不需要带上arr[9]了,只有前9个数比较,所以i--,i=7, 第二趟的第二个for还是从头开始两两比较,最终可以得到arr[8],这个值是这次比较中的最大值。总共两趟循环下来了,得到了最大值,和第二大的值。后面的循环以此类推。。

    啊异人

    谢谢你!我看到你这里我才懂的!

    2019-09-01 16:26:43

    共 2 条回复 >

  • 极度冷漠i
    2019-05-04 17:42:57

    循环的嵌套,前面有提过,先外然后内,内循环完了在进行外循环

C语言入门

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

926020 学习 · 20793 问题

查看课程

相似问题