解题思路以及注意事项:

  1. 用两层for循环嵌套,让每两个数进行比较,满足条件就交换。

  2. 因为其效果像冒泡一样,所以又叫冒泡法。

实例代码:

#include"stdio.h"
int main()
{
    int a[10],i,changes,j;                  //定义了a数组,i,j一般都是用来控制循环的
    for(i=0;i<10;i++)
    {
    scanf("%d",&a[i]);
    }
    for(i=0;i<9;i++)                       //依次从第一个数开始排,每次到外层循环都会排好一个数
        for(j=0;j<10-i;j++)
        {
            if(a[j]>a[j+1])
            {
                changes=a[j];               //交换
                a[j]=a[j+1];
                a[j+1]=changes;
            }
        }
        for(i=0;i<10;i++)                   //输出
        {
            printf("%d\n",a[i]);
        }
    return 0;
}

如果还有什么不懂的请到下方评论区留言

点赞(23)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 7 条评论

glinx 4年前 回复TA

你这是冒泡排序啊

吾名 6年前 回复TA

选择法不是这样的吧

mhww 6年前 回复TA

选择不是冒泡,不需要每次对比都交换位置,只需要在每个“剩余最小”交换就可以了,最多交换10次。

刘想 7年前 回复TA

应该是j<9-i,因为i=0的时候如果是10-i,j能取到0,那a[j+1]就能取到a[10]了,明显是错的

dotcpp-小鸟 7年前 回复TA

@dotcpp-小鸟 明白点了。

Mister-小方 7年前 回复TA

@dotcpp-小鸟 现在没问题了吧,就是排好第一个数要比较10次,第二个数要比较9次。。。。。。。

dotcpp-小鸟 7年前 回复TA

我看不懂11-i,能给讲讲吗?