zoukankan      html  css  js  c++  java
  • 如何用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("请输入要排序的数:
    ");
    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
    ", a[i].name);
        }
        getchar();
        getchar();
        return 0;
    }

    运行结果如下

  • 相关阅读:
    HDU 1394 Minimum Inversion Number
    LA 3938 动态最大连续和(线段树)
    HDU 1754 I Hate It(线段树)
    HDU 1166 敌兵布阵(线段树 or 二叉索引树)
    《乞力马扎罗的雪》读书笔记
    LA 3266 田忌赛马
    UVa 11235 频繁出现的数值
    《月亮与六便士》读书笔记
    LA 3135 阿格斯(优先队列)
    LA 3027 合作网络
  • 原文地址:https://www.cnblogs.com/YanQing1998/p/11991743.html
Copyright © 2011-2022 走看看