结构体排序

Posted 0424lrn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体排序相关的知识,希望对你有一定的参考价值。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn = 1010;
 5 struct node{
 6     int x,y;
 7     friend bool operator<(const node &a,const node &b){//结构体内部定义排序规则 
 8         if(a.x != b.x)        return a.x < b.x;//从小到大 
 9         else                return a.y > b.y;//从大到小 
10     }
11 }a[maxn];
12 
13 int main()
14 {
15     int n = 3;
16     a[0].x = 2;
17     a[0].y = 3;
18     a[1].x = 4;
19     a[1].y = 3;
20     a[2].x = 2;
21     a[2].y = 4;
22     
23     sort(a,a+n);
24     for(int i=0;i<n;i++)
25         printf("x = %d,y = %d
",a[i].x,a[i].y);
26 }
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn = 1010;
 5 struct node{
 6     int x,y;
 7     
 8 }a[maxn];
 9 
10 int cmp(node &a, node &b){
11     if(a.x != b.x)    return a.x < b.x;//从小到大 
12     return b.y < a.y;//从大到小 
13 } 
14 int main()
15 {
16     int n = 3;
17     a[0].x = 2;
18     a[0].y = 3;
19     a[1].x = 4;
20     a[1].y = 3;
21     a[2].x = 2;
22     a[2].y = 4;
23     
24     sort(a,a+n, cmp);
25     for(int i=0;i<n;i++)
26         printf("x = %d,y = %d
",a[i].x,a[i].y);
27 }

结构体的排序的两种方式,(1)在结构体内部定义排序规则:friend bool operator<(const node &a,const node &b),(2)在sort函数中放入比较函数cmp;两者的共同点在于return a.x < b.x即要求按x值从小到大排序

以上是关于结构体排序的主要内容,如果未能解决你的问题,请参考以下文章

如何用sort对结构体进行排序

结构体数组的排序

c语言结构体排序示例

题目1007:奥运排序问题(结构体排序)

结构体-输入成绩排序

用lambda表达式按照结构体中的一个字段来排序一个结构体数组