结构体二级排序

sort函数对结构体排序,如果结点a相等,比较结点b ,以从小到大 为例:
struct node{
	int num;
	int data;
}c[100];

对于上述定义的结构体可以添加一个自定义cmp函数来实现结构体的排序:

写法1:

bool cmp(node a,node b)
{
	if(a.t!=b.t) return a.t<b.t;
	else return a.s<b.s;
}
写法2:
bool cmp(node a,node b)
{ 
	if(a.num<b.num)
	{
		return true;
	}
	else
		if(a.num==b.num)
		{
			if(a.data<b.data)
			{
				return true ;
			}
		}
	return false ;
}

测试:

#include<iostream>
#include<algorithm>

using namespace std;

struct node{
	int num;
	int data;
}c[100];

//写法1: 
//bool cmp(node a,node b)
//{
// if(a.t!=b.t) return a.t<b.t;
// else return a.s<b.s;
//}

//写法2: 
bool cmp(node a,node b)
{ //sort函数的结构体排序,从小到大 。 
	if(a.num<b.num)
	{
		return true;
	}
	else
		if(a.num==b.num)
		{
			if(a.data<b.data)
			{
				return true ;
			}
		}
	return false ;
}

int main()
{
	int n,k;
	cin>>n;
	for(int i=0;i<n;i++)
	{//输入node 
		cin>>c[i].num>>c[i].data;
	}
	sort(c,c+n,cmp);
	cout<<"排序后为:"<<endl; 
	for(int i=0;i<n;i++)
	{
		cout<<c[i].num<<" "<<c[i].data<<endl;	
	 } 
	return 0;
}

测试结果:

全部评论

相关推荐

10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
09-21 23:16
门头沟学院 Java
传奇逃兵王:招不起就别招,叽里咕噜说啥呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务