一、什麼是qsort函數
qsort函數是C++標準庫中的一個用於排序的函數。可以對數組中的元素進行排序。相對於手寫的排序算法,qsort函數具有更高的效率和更強的通用性。
二、qsort函數的使用方法
qsort函數的使用方法如下:
void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));
參數解釋:
- base:指向要排序的數組的第一個元素的指針。
- num:數組中元素的個數。
- size:每個元素的大小,以字節為單位。
- compar:用於比較元素的函數指針。
三、使用qsort函數進行排序
假設有一個整型數組,需要進行排序,可以使用qsort函數進行排序。
#include<stdio.h>
#include<stdlib.h>
int compare(const void* a, const void* b)
{
return *(int*)a - *(int*)b;
}
int main()
{
int arr[] = {1, 5, 3, 4, 2};
int len = sizeof(arr) / sizeof(arr[0]);
qsort(arr, len, sizeof(arr[0]), compare);
for(int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
輸出結果為:
1 2 3 4 5
四、自定義比較函數
使用qsort函數進行排序時,需要自定義一個比較函數。比較函數的返回值應該是一個整數。如果返回值是負數,則表示第一個參數應該排在第二個參數之前;如果返回值是正數,則表示第一個參數應該排在第二個參數之後;如果返回值是0,則表示兩個參數相等。
例如,對於一個字符串數組,可以按字符串長度進行排序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int compare(const void* a, const void* b)
{
return strlen((char*)a) - strlen((char*)b);
}
int main()
{
char* arr[] = {"apple", "banana", "hello", "world", "cpp"};
int len = sizeof(arr) / sizeof(arr[0]);
qsort(arr, len, sizeof(char*), compare);
for(int i = 0; i < len; i++)
{
printf("%s ", arr[i]);
}
return 0;
}
輸出結果為:
cpp hello apple world banana
五、總結
qsort函數是C++標準庫中的一個用於排序的函數,可以對數組中的元素進行排序。相對於手寫的排序算法,qsort函數具有更高的效率和更強的通用性。使用qsort函數進行排序時,需要自定義一個比較函數。比較函數的返回值應該是一個整數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/151572.html