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

这一段 i 为啥么是从8开始循环,temp好像也没什么用啊

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

    {

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

        {

            if(arr[j] > arr[j+1])      //当前面的数比后面的数大时

            {

                double temp;    //定义临时变量temp

                temp = arr[j];    //将前面的数赋值给temp

                arr[j] = arr[j+1];             //前后之数颠倒位置

                arr[j+1] = temp;              //将较大的数放在后面    

            }                 

        }                

    }


提问者:慕斯2458264 2019-04-14 00:51

个回答

  • qq_慕侠8374896
    2019-04-14 13:43:33
    已采纳

    i=8是因为后面j<=i时if里调用arr[j]和arr[j+1]比较,j+1就可以调用到第十个数了;

    temp是用来交换值的,arr[j]和arr[j+1]比较后,把大的那个赋给arr[j+1],如此循环大的值就会一步一步的移到最后面实现从小到大的排序。

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

    数组是从0开始算的,一共10个数,所以当子循环里面也为8的时候可以+1这样子就可以把最大的数排在最后面了呀

    建议自己跟着程序走一遍


  • liujunjiede
    2019-05-03 22:45:12

    https://img1.mukewang.com/5ccc521100017d5603630261.jpg

    因为数组arr[]里有10个元素,i是元素的下标,数组第一个元素是arr[0];i=8,也就是数组里面倒数一第二个元素。

    上面的图是刚才随手画的;如果有N个元素

    第一次冒泡,比较n-1次;、

    第二次冒泡,比较n-2次;

    第n-1次冒泡,比较1次;

    temp就是一个盒子,先把前面的元素放盒子里,再把后面的元素给前面,最后从从盒子里把值给后面的元素,这样就换元素了,C是不能直接把两个值互相替换的,

    应该是这样的吧?