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
指向的函数用于比较数组的两个元素。该函数按升序修改数组本身的内容。
但是,如果两个或多个元素相等,则它们的顺序是不确定的。
参数:
base
:指向要排序的数组的第一个元素的指针num
: 数组中的元素数size
:数组中每个元素的大小(以字节为单位)compare
:指向比较两个元素的函数的指针。它返回- 如果第一个参数小于第二个参数,则为负整数
- 如果第一个参数大于第二个参数,则为正整数
- 如果两个参数相等则为零
比较函数的原型如下:
int compare(const void* a, const void* b);
返回:
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 << "Before sorting" << endl;
for (int i=0; i<num; i++)
cout << arr[i] << " ";
qsort(arr,num,sizeof(int),compare);
cout << endl << endl;
cout << "After sorting" << endl;
for (int i=0; i<num; i++)
cout << arr[i] << " ";
return 0;
}
运行程序时,输出将是:
Before sorting 9 4 19 2 7 9 5 15 23 3 After sorting 2 3 4 5 7 9 9 15 19 23
相关用法
- C++ queue::swap()用法及代码示例
- C++ queue::empty()、queue::size()用法及代码示例
- C++ queue::emplace()用法及代码示例
- C++ queue front()用法及代码示例
- C++ quick_exit()用法及代码示例
- C++ queue::push()、queue::pop()用法及代码示例
- C++ queue::front()、queue::back()用法及代码示例
- C++ unordered_map cbegin用法及代码示例
- C++ map lower_bound()用法及代码示例
- C++ Unordered_multimap reserve()用法及代码示例
- C++ list assign()用法及代码示例
- C++ std::max()用法及代码示例
- C++ std::string::push_back()用法及代码示例
- C++ Array swap()用法及代码示例
- C++ valarray cos用法及代码示例
- C++ multimap key_comp()用法及代码示例
- C++ Deque erase()用法及代码示例
- C++ List cend()用法及代码示例
- C++ std::less_equal用法及代码示例
- C++ set rbegin()用法及代码示例
注:本文由纯净天空筛选整理自 C++ qsort()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。