如何用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;
}

運行結果如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM