【C 語言入門】qsort 是甚麼?怎麼用?

qsort 是 C函數庫中的排序函式。

先來介紹 qsort 的定義。

void qsort(void* list, size_t n, size_t size, int (*cmp)(const void*, const void*)):

陣列基礎的快速排序法函數

  • 參數 list 是陣列
  • n 是陣列大小
  • size 是陣列中每個元素的大小
  • 最後的參數是指向函數的指標,也是元素之間的比較函數

比較除了比大小,也可以加入其他條件。

直接用的話就會變成:

qsort((void *)a, 100, sizeof(a[0]), cmpFunc);

另外有 cmpFunc 這個單獨的 function。

也可以看看以下範例,來自 leetcode 的第 976 道題,完整題目可以參考這裡

int cmpFunc(const int* a, const int* b)
{
    return (*b - *a);
}
qsort(A, ASize, sizeof(int), cmpFunc);
for (int i; i< ASize; i++){
    printf("%d", A[i]);
}

如果輸入的 A = [1, 2,1]。

小到大排序:

int cmpFunc(const int* a, const int* b)
{
    return (*a - *b);
}

輸出結果:

112

大到小排序:

int cmpFunc(const int* a, const int* b)
{
    return (*b - *a);
}

輸出結果:

211

Leave a Comment

Your email address will not be published. Required fields are marked *