首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言冒泡排序字串陣列:按字母序升序排列完整實現

     編輯:關於C

演算法:冒泡排序

  • 比較相鄰字串,若前者大於後者則交換指標。
  • 外層 n-1 趟,內層遞減。
  • 字串比較用 strcmp,返回 >0 表示前者大。

完整代碼

#include 
#include 

void sort(char *a[], int n) {
    for (int i = 0; i < n - 1; ++i) {
        for (int j = 0; j < n - 1 - i; ++j) {
            if (strcmp(a[j], a[j + 1]) > 0) {
                char *tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}

void print(char *a[], int n) {
    for (int i = 0; i < n; ++i) printf("%s ", a[i]);
    putchar('\n');
}

int main(void) {
    char *a[] = {"ceo", "define", "basic", "abc", "empty"};
    int n = sizeof(a) / sizeof(a[0]);

    printf("原序列:"); print(a, n);
    sort(a, n);
    printf("排序後:"); print(a, n);
    return 0;
}

輸出結果

原序列:ceo define basic abc empty
排序後:abc basic ceo define empty

優化建議

  • 加入標誌位 swapped,若某趟無交換則提前結束。
  • 實際專案優先使用 qsort(快速排序,O(n log n))。
  • qsort 範例:
int cmp_str(const void *p1, const void *p2) {
    return strcmp(*(char* const*)p1, *(char* const*)p2);
}
qsort(a, n, sizeof(char*), cmp_str);

複雜度

演算法時間空間穩定性
冒泡O(n²)O(1)穩定
qsortO(n log n) 平均O(log n) 棧不穩定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved