在C語言中,可以使用標準庫中的qsort
函數進行排序操作。qsort
函數的原型如下:
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
其中,base
是指向待排序數組的指針,nmemb
是數組的元素個數,size
是每個元素的大小(以字節為單位),compar
是用來比較兩個元素大小的函數指針。
比較函數compar
的原型如下:
int compar(const void *a, const void *b);
該函數需要返回一個整數值,如果a
應該排在b
之前,則返回負值;如果a
應該排在b
之后,則返回正值;如果a
和b
相等,則返回0。
下面是一個示例代碼,演示如何使用qsort
函數對一個整型數組進行升序排序:
#include <stdio.h>
#include <stdlib.h>
// 比較函數
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
int n = sizeof(arr) / sizeof(arr[0]);
// 使用qsort函數進行排序
qsort(arr, n, sizeof(int), compare);
// 輸出排序后的數組
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
運行以上代碼將輸出:1 1 2 3 3 4 5 5 6 9
。