在C語言中,qsort
函數是用于對數組進行快速排序的標準庫函數。要自定義qsort
的比較函數,你需要傳遞一個指向函數的指針作為參數,該函數應接受兩個指向要比較的元素的指針,并返回一個整數來指示它們的順序。
以下是一個自定義比較函數的示例,該函數按照降序比較兩個整數:
#include <stdio.h>
#include <stdlib.h>
// 自定義比較函數,按降序比較兩個整數
int compare(const void *a, const void *b) {
int int_a = *(int*)a;
int int_b = *(int*)b;
if (int_a > int_b) {
return -1;
} else if (int_a < int_b) {
return 1;
} else {
return 0;
}
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
// 使用自定義比較函數對數組進行排序
qsort(arr, n, sizeof(int), compare);
// 打印排序后的數組
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
在這個示例中,我們定義了一個名為compare
的比較函數,它接受兩個指向整數的指針,并返回一個整數來指示它們的順序。然后,我們在main
函數中使用qsort
函數對數組進行排序,并將自定義比較函數作為參數傳遞給它。最后,我們打印排序后的數組以驗證結果。