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 << "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
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战