C++ qsort() 函数
qsort()
函数使用比较函数来决定哪个元素比另一个小/大。
qsort() 函数原型
void qsort (void* base, size_t num, size_t size, int (*compare)(const void*,const void*));
该函数定义在 <cstdlib>
头文件中。
qsort()
函数按升序对 base
指向的数组进行排序。数组包含 num
个元素,每个元素 size
字节大小。
compare
指向的函数用于比较数组中的两个元素。该函数按升序修改数组的内容。
然而,如果两个或多个元素相等,它们的顺序是未定义的。
qsort() 参数
base
:指向要排序的数组第一个元素的指针num
:数组中的元素数量size
:数组中每个元素的字节大小compare
:指向一个比较两个元素的函数的指针。它返回- 如果第一个参数小于第二个,则返回负整数
- 如果第一个参数大于第二个,则返回正整数
- 如果两个参数相等,则返回零
比较函数的原型如下:
int compare(const void* a, const void* b);
qsort() 返回值
qsort()
函数不返回任何内容。经过排序的数组由 base
指向。
示例:qsort() 函数如何工作?
#include <iostream>
#include <cstdlib>
using namespace std;
int compare(const void* a, const void* b)
{
const int* x = (int*) a;
const int* y = (int*) b;
if (*x > *y)
return 1;
else if (*x < *y)
return -1;
return 0;
}
int main()
{
const int num = 10;
int arr[num] = {9, 4, 19, 2, 7, 9, 5, 15, 23, 3};
cout << "排序前" << endl;
for (int i=0; i<num; i++)
cout << arr[i] << " ";
qsort(arr, num, sizeof(int), compare);
cout << endl << endl;
cout << "排序后" << endl;
for (int i=0; i<num; i++)
cout << arr[i] << " ";
return 0;
}
当你运行程序时,输出将是:
排序前
9 4 19 2 7 9 5 15 23 3
排序后
2 3 4 5 7 9 9 15 19 23