排序之根据某一字段的应用排序实现

本文介绍了一种在C++中根据记录的特定字段进行排序的方法,利用qsort函数结合自定义比较函数实现对结构体数组的高效排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DS里介绍了各种狂拽酷炫的排序算法,但是都是基于单个元素,实际应用中对某条记录的某个字段来排序的情况层出不穷,如果还是原来的算法直接用的话,恐怕无济于事,

于是我想怎么根据某个字段来排序,当时学C++的时候qsort,一直都用这个排序,有个compare函数比较纠结,里面指针多,这个是排序的依据,在这里就有用了,如果你用sort估计是不行了,或者自己重写sort,比较的交换的时候改一改就好了。


基于这个目的,有了下面的toy代码,这样其他的都可以套了。但是如果是vector好像不行,我再看看怎么解决(vector解决了,用sort 也是带个比较函数的参数,见后一篇日志)

#include <iostream>
#include <vector>
using namespace std;
struct node
{
	int val;
	int val2;
};
int compare(const void*a, const void*b)
{
	if(((node*)a)->val2>((node*)b)->val2) return 1;
	if(((node*)a)->val2<((node*)b)->val2) return -1;
	if(((node*)a)->val2==((node*)b)->val2) return 0;
}
int main()
{
	node na[10];
	vector<node> vec;
	int num=10;
	for(int i=0;i<num;i++)
	{
		node n;
		n.val=i;n.val2=-i;
		na[i]=n;
	}
	qsort(na,num,sizeof(node),compare);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值