这个记性也是差的,老是忘记,现在直接贴这里,就不怕忘记了。
测试数据在当中,结果在最后面
先按a排序(升序),a相等的时候按b排序(降序)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define MAX 100
struct Node
{
int a;
int b;
}node[MAX];
bool cmp(Node x,Node y)
{
if(x.a==y.a)
{
return x.b>y.b;
}
else
return x.a<y.a;
}
//n 8
//a 1 2 3 6 8 7 7 7
//b 2 3 4 4 9 5 6 10
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d %d",&node[i].a,&node[i].b);
for(i=0;i<n;i++)
printf("a=%d b=%d\n",node[i].a,node[i].b);
printf("\n\n--------\n\n");
sort(node,node+n,cmp);
for(i=0;i<n;i++)
printf("a=%d b=%d\n",node[i].a,node[i].b);
return 0;
}
a=1 b=2
a=2 b=3
a=3 b=4
a=6 b=4
a=8 b=9
a=7 b=5
a=7 b=6
a=7 b=10
--------
a=1 b=2
a=2 b=3
a=3 b=4
a=6 b=4
a=7 b=10
a=7 b=6
a=7 b=5
a=8 b=9