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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。