如何使用C語言庫函數(shù)qsort對數(shù)組進行排序
1. 函數(shù)使用語法C語言的標(biāo)準(zhǔn)庫提供了一個重要的排序函數(shù)qsort給C語言使用者使用。qsort函數(shù)將快速排序的算法封裝起來,能夠?qū)Σ煌愋吞峁┛焖俚呐判?,其時間復(fù)雜度為O(nlog n)。qsort
1. 函數(shù)使用語法
C語言的標(biāo)準(zhǔn)庫提供了一個重要的排序函數(shù)qsort給C語言使用者使用。qsort函數(shù)將快速排序的算法封裝起來,能夠?qū)Σ煌愋吞峁┛焖俚呐判?,其時間復(fù)雜度為O(nlog n)。qsort函數(shù)的使用語法如下:
```c
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
```
該語法比較抽象,下面將提供具體的實例來展示具體的使用方法。
2. 頭文件
為了避免麻煩,我們可以使用萬能頭文件`include
3. 比較函數(shù)
比較函數(shù)是qsort函數(shù)中非常重要的一部分。比較函數(shù)的形式如下:
```c
int compare(const void *a, const void *b)
```
返回值的意義:
- 返回值小于0:a所在位置排在b的前面
- 返回值大于0:a所在位置排在b的后面
4. 一個比較函數(shù)例子
下面給出一個遞減排序的比較函數(shù)例子:
```c
int compare1(const void *a, const void *b){
int *p1 (int*)a;
int *p2 (int*)b;
return (*p2 - *p1);
}
```
另外,如果要實現(xiàn)遞增排序,則只需要改變比較函數(shù)的返回值即可:
```c
int compare2(const void *a, const void *b){
int *p1 (int*)a;
int *p2 (int*)b;
return (*p1 - *p2);
}
```
5. 對數(shù)組進行排序
接下來我們將使用qsort函數(shù)對數(shù)組進行排序。假設(shè)有一個整型數(shù)組`int p[] {3, 4, 2, 1, 5}`,我們調(diào)用qsort函數(shù)進行排序:
```c
qsort(p, n, sizeof(int), compare1);
```
這里的第一項是數(shù)組名,第二項是數(shù)組元素的數(shù)量,第三項是每一項的空間大小,第四項是比較函數(shù)。
6. 總的程序
下面是一個完整的程序示例:
```c
include
using namespace std;
int compare1(const void *a, const void *b){
int *p1 (int*)a;
int *p2 (int*)b;
return (*p1 - *p2);
}
int main(){
int p[] {3, 4, 2, 1, 5};
int n sizeof(p)/sizeof(int); // 數(shù)組元素的數(shù)量
qsort(p, n, sizeof(int), compare1);
cout<<"sorted array: ";
for (int i0; i cout< } return 0; } ``` 通過以上代碼,我們可以使用C語言的qsort函數(shù)對數(shù)組進行排序,并輸出排序后的結(jié)果。