首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C語言冒泡排序實現:10個整數升序降序輸出完整代碼

     編輯:程式設計綜合問答

需求描述

編寫 C 語言程序,對 10 個整數進行冒泡排序,分別按升序和降序輸出結果。

核心算法:帶方向標誌的冒泡排序

通過參數 desc 控制排序方向:0 升序,1 降序。雙層循環比較相鄰元素,滿足條件即交換。

完整可運行代碼

#include <stdio.h>

void bubbleSort(int *data, int n, int desc) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            // 升序:前大於後交換;降序:前小於後交換
            if ((data[j] > data[j + 1] && !desc) || (data[j] < data[j + 1] && desc)) {
                int temp = data[j];
                data[j] = data[j + 1];
                data[j + 1] = temp;
            }
        }
    }
}

int main() {
    int data[] = {3, 2, 3, 4, 1, 9, 5, 2, 6, 8};
    int n = 10;

    printf("原始數據: ");
    for (int i = 0; i < n; i++) printf("%d ", data[i]);
    printf("\n");

    // 升序排序
    bubbleSort(data, n, 0);
    printf("升序結果: ");
    for (int i = 0; i < n; i++) printf("%d ", data[i]);
    printf("\n");

    // 降序排序
    bubbleSort(data, n, 1);
    printf("降序結果: ");
    for (int i = 0; i < n; i++) printf("%d ", data[i]);
    printf("\n");

    return 0;
}

代碼詳解

  • bubbleSort 函數接收數組指針、長度、方向標誌,原地排序。
  • 外層循環 n-1 趟,內層每趟減少一次比較(已排好序的元素沉底/浮頂)。
  • 判斷條件合併升降序邏輯,避免重複代碼。
  • main 中演示原始、升序、降序三次輸出。

優化提示

  • 加入「有序標誌」優化:若某趟無交換則提前結束,最好情況 O(n)。
  • 對於大數據量,建議改用快速排序、歸併排序(O(n log n))。

運行結果示例

原始數據: 3 2 3 4 1 9 5 2 6 8
升序結果: 1 2 2 3 3 4 5 6 8 9
降序結果: 9 8 6 5 4 3 3 2 2 1
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved