首先来看实现思路:

为了方便理解我们就任意取4个数字 :34 12 56 13

第一轮是我们第一个数字和第二个数字比较,如果左边比右边大就把大的数字放到右边,

这里是34和12比较,比12大,然后两个就交换位置变成了12 34 56 13。然后呢,34又和56比较,

比56小,不交换位置,56又和13比较,比13大,交换位置变成了

12 13  34 56 第一轮我们就找到了最大的数字56。后面第二轮再如此重复,每次比较的次数要少

1,因为我们每比较一轮,最右边就得到一个最大的数,就不用和它比较了。

int i,j,t,a[10];    //定义变量及数组为基本整型
    printf("请输入10个数:\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);    //从键盘中输入10个数
        for(i=0;i<9;i++)      //变量i代表比较的趟数
        for(j=0;j<9-i;j++)    //变最j代表每趟两两比较的次数
         if(a[j]<a[j+1])
         {
          t=a[j];
          a[j]=a[j+1];
          a[j+1]=t;         //产利用中间变童实现两值互换
         }
            
         printf("排序后的顺序是:\n");
        for(i=0;i<10;i++)
            printf("%5d",a[i]);    //将冒泡排序后的顺序输出
            printf("\n");

我一直爱懵的一点:定义数组的时候,比如说:a[5],只是说我们里面有5个元素,但是我们取出来出来的时候数组下标要从a[0]开始,也就是下标比定义的空间数字少1。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐