CC++ qsort函数和sort函数

本文介绍了C语言中的qsort()函数和C++中的sort()函数,用于实现数组排序。qsort()需要指定排序数组、元素个数、元素大小及比较函数,而sort()则在C++标准库中,适用于一维数组,可通过自定义比较函数实现降序排序。对于结构体或二维数组的排序,文章提供了相应示例和注意事项。
摘要由CSDN通过智能技术生成

qsort() 函数和 sort() 函数实现排序功能,前者是 C 语言内容,后者是 C++ 内容,下面逐一讲解。

qsort()

先来看一个对数组 arr 排序的例子。qsort() 函数在 stdlib.h 库中,使用时要包含该库文件。

#include <stdio.h>
#include <stdlib.h>

int cmp1(int * a, int * b)
{
   
	return *a - *b;
}

int main()
{
   
	int arr[5] = {
   3, 1, 5, 2, 4};
	qsort(a, 5, sizeof(int), cmp1);
	
	int i;
	for (i = 0; i < 5; i++)
		printf("%i ", a[i]);
	return 0;
} 

qsort() 函数有 4 个参数。第 1 个参数表示要排序的数组地址,这里参数为 arr,表示对数组 arr 排序。第 2 个参数表示要排序的元素个数,数组里有 5 个元素,所以为 5。第 3 个参数表示每个元素的大小(单位字节),通过 sizeof() 运算符计算 int 类型的字节数。第 4 个参数表示比较函数,形参为指针类型,返回值小于 0,表示 a 要在 b 的左侧,也即从小到大排序;大于 0 则相反;等于 0 顺序不确定。

假设对结构体 arr_s 排序,优先按照结构体中第 1 个元素大小排序,当第 1 个元素大小相等时,按第 2 个元素大小排序。

struct node
{
   
	int v1;
	int v2;
};

int cmp2(struct node * s1, struct node * s2)
{
   
	if (s1->v1 != s2->v1)
		return s1->v1 - s2->v1;
	return s1->v2 - s2->v2;
}

int main()
{
   
	struct node arr_s[5] = {
    {
   2, 3}, {
   1, 2}, {
   2, 2}, {
   3, 2}, {
   1, 1} };
	qsort(arr_s, 5, sizeof
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值