数组冒泡排序的代码及其详细剖析

                 5  4  3  2  1

 

 第0轮 : 4  5  3  2  1

                 4  3  5  2  1

                 4  3  2  5  1

                 4  3  2  1  5

 

 比较4次

 

 第1轮 :3  4  2  1  5

                3  2  4  1  5

                3  2  1  4  5

 

 比较3次

 

 第2轮 :2  3  1  4  5

                2  1  3  4  5

 

 比较2次

 

 第3轮 :1  2  3  4  5

 

 比较1次

 

 一共比较了多少轮? =  长度-1-1

 

 每轮比较的次数 =  长度 - 轮数 - 1


#include <stdio.h>


int main(int argc,constchar * argv[]) {

   

    

//    int nums[] = {10,9,8,7,6,5,4,3,2,1};

    

    int nums[] = {5,4,3,2,1};

    

    int len = sizeof(nums) /sizeof(int);

    

    for (int i=0; i<len; i++) {

        

        printf("%d\n",nums[i]);

    }

    

    printf("-------以上是交换之前--------\n");

    

    for (int i=0; i<= len-1-1; i++) {//相当于 i<=3 i= 0,1,2,3


        for (int j=0; j<len-i-1; j++) {//相当于 j<=5-0-1; j<4   0 1 2 3

            

            if(nums[j] > nums[j+1] ){//如果当前遍历到的数字>下一个数字

             

                int temp = nums[j];

                

                nums[j] = nums[j+1];//把j的位置,变成了下一个位置的元素

                

                nums[j+1] = temp;//把下一个位置的元素变成了J的元素

            }

        }

        

    }

    

    for (int i=0; i<len; i++) {

        

        printf("%d\n",nums[i]);

    }


    return 0;

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值