结构体简单的二级排序
sort 和 qsort.
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
using namespace std;
typedef struct node
{
int x,y;
}G;
int cmp1(const G &a,const G &b)
{
if(a.x!=b.x) return a.x>b.x; //以X递减排序
else return a.y>b.y;//x相同,以y递减排序
}//sort
int cmp2(const void *a,const void *b)
{
G *p1=(G *)a;
G *p2=(G *)b;
if(p1->x!=p2->x) return p1->x-p2->x;//以X递增排序
else return p1->y-p2->y; //x相同,以y递增排序
}//qsort
int main()
{
int n;
int i,j,k;
G array[1001];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d%d",&array[i].x,&array[i].y);
}
sort(array,array+n,cmp1);
for(i=0;i<n;i++)
{
printf("%d %d\n",array[i].x,array[i].y);
}
qsort(array,n,sizeof(array[0]),cmp2);
for(i=0;i<n;i++)
{
printf("%d %d\n",array[i].x,array[i].y);
}
}
return 0;
}