Qsort()是什麼意思
qsort()
是一個 C 語言的標準函式庫,用於對陣列進行快速排序(Quicksort)。這個函式會接受一個指針,這個指針指向一個要排序的陣列,以及陣列中元素的類型、元素的大小(通常為 sizeof 運運算元計算出來的值),以及一個比較函式,這個函式用來定義元素間的大小關係。
qsort()
的基本語法如下:
void qsort(void *base, size_t num, size_t size,
int (*compare)(const void *, const void *));
base
:指向要排序的陣列的起始地址。num
:要排序的元素數量。size
:每個元素的大小(以 bytes 為單位)。compare
:一個比較函式,它接受兩個元素的指針,並返回一個指示這些元素之間關係的整數:- 如果
(*compare)(a, b)
返回一個正整數,表示a
比b
大。 - 如果
(*compare)(a, b)
返回一個零,表示a
與b
相等。 - 如果
(*compare)(a, b)
返回一個負整數,表示a
比b
小。
- 如果
以下是一個簡單的範例,展示了如何使用 qsort()
來排序一個整數陣列:
#include <stdlib.h>
#include <stdio.h>
int compare(const void *a, const void *b) {
const int *ia = a;
const int *ib = b;
return *ia < *ib ? -1 : (*ia > *ib ? 1 : 0);
}
int main() {
int array[] = {5, 3, 8, 2, 7};
int num = sizeof(array) / sizeof(array[0]);
qsort(array, num, sizeof(array[0]), compare);
for (int i = 0; i < num; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
這個範例程式會輸出:
2 3 5 7 8
因為 qsort()
使用的是指針,所以不需要在排序前將陣列拷貝到一個新的陣列中。排序過程會在原地進行,這意味著原始陣列的元素會被重新排列,而不會產生新的陣列。