如何用C语言实现冒泡排序法?

话不多说,代码如下:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a[100], i, j, t, n;
 6     printf("请输入要排序的数的个数:");
 7     scanf_s("%d", &n);         //输入一个数n,表示接下来有n个数
 8     for (i = 1; i <= n; i++)
 9     {
10         //循环读入n个数到数组a中
11         printf("请输入要排序的数:\n");
12         scanf_s("%d", &a[i]);
13     }
14     //冒泡排序的核心部分
15     for (i = 1; i <= n; i++) //n个数排序,只进行n-1趟
16     {
17         for (j = 1; j <= n - i; j++)  //从第一位开始比较直到最后一个尚未归位的数
18         {
19             if (a[j] < a[j + 1])  //比较大小并交换
20             {
21                 t = a[j];
22                 a[j] = a[j + 1];
23                 a[j + 1] = t;
24             }
25         }
26     }
27     for (i = 1; i <= n; i++)
28     {
29         printf(" %d", a[i]);
30     }
31     getchar();
32     getchar();
33     return 0;
34 }

 运行结果如下:

根据分数高低来给姓名排序,使用了一个结构体,代码如下:

#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>

//创建一个结构体用来存储姓名和分数
struct MyStruct
{
    char name[21];
    char score;
};

int main()
{
    struct MyStruct a[100], t;
    int i, j, n;
    scanf("%d", &n);//输入一个数n,表示要排序的个数
    //循环读入n个人名和分数
    for (i = 1; i <= n; i++)
    {
        scanf("%s %d",&a[i].name,&a[i].score);
    }
    //冒泡排序,按分数从高到低进行排序
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j < n; j++)   //对分数进行比较
        {
            if (a[j].score < a[j + 1].score)
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    //输出人名
    for (i = 1; i <= n; i++)
    {
        printf("%s\n", a[i].name);
    }
    getchar();
    getchar();
    return 0;
}

运行结果如下

 

posted @ 2019-12-05 21:49  代号1024  阅读(4066)  评论(0编辑  收藏  举报