當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ qsort()用法及代碼示例


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