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

C 語言字串指標陣列排序:二級指標參數傳遞與指標交換高效法

     編輯:關於C語言

C 語言字串指標陣列排序:二級指標參數傳遞與指標交換高效法

資料結構

char *fruits[] = {"banana", "apple", "pear", "orange"};
// 記憶體: fruits[0]──>"banana\0" (唯讀區)
//        fruits[1]──>"apple\0"
// 陣列大小固定,元素為指標

排序函數:交換指標而非複製字串

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

完整程式碼

#include <stdio.h>
#include <string.h>

void print_arr(char **arr, int n) {
    for (int i=0; i

效能優勢

方法操作時間複雜度記憶體搬移
指標交換交換 4/8 位元組指標O(n²) 比較 + O(1) 交換極小
strcpy 複製逐字元複製字串內容O(n² * L)大量

L 為平均字串長度。指標交換法是 C 語言排序字串的標準高效做法。

注意事項

  • 原始字串常數不可修改,故只能交換指標。
  • 若需修改字串內容,必須先 malloc 複製一份。
  • qsort 標準庫函數同樣接受比較函數指標,內部也是交換指標。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved