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

这一段 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;              //将较大的数放在后面    

            }                 

        }                

    }


正在回答

3 回答

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

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

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

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

建议自己跟着程序走一遍


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

https://img1.sycdn.imooc.com//5ccc521100017d5603630261.jpg

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

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

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

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

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

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

应该是这样的吧?

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

举报

0/150
提交
取消

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

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