qsort
int comp(const void *a,const void *b)
 {
 struct node*c=(node*)a;
 struct node*d=(node*)b;
 if(c->x!=d->x)
 return c->x-d->x;
 else
 return c->y-d->y;
 }
 
qsort(s,m,sizeof(s[0]),comp);
 
qsort的二级排序完整代码:
 
#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
 
#define swap(a,b) {t=a;a=b;b=t;}//编译预处理命令中的宏定义
 
int t;
 
struct node
 
{
 
 
int x;
 
 
int y;
 
}s[100];
 
int comp(const void *a,const void *b)
 
{
 
 
struct node*c=(node*)a;
 
 
struct node*d=(node*)b;
 
 
if(c->x!=d->x)
 
 
return c->x-d->x;
 
 
else
 
 
return c->y-d->y;
 
}
 
int main()
 
{
 
 
int n;
 
 
scanf("%d",&n);
 
 
while(n--)
 
 
{
 
 
int i,m;
 
 
scanf("%d",&m);
 
 
for(i=0;i<m;i++)
 
 
{
 
 
scanf("%d%d",&s[i].x,&s[i].y);
 
 
}
 
 
qsort(s,m,sizeof(s[0]),comp);
 
 
/*for(i=0;i<m;i++)//排序,可重复
 
 
{
 
 
printf("%d %d\n",s[i].x,s[i].y);
 
 
}*/
 
 
for(i=0;i<m-1;i++)//去掉重复的
 
 
{
 
 
if(s[i].x==s[i+1].x &&s[i].y==s[i+1].y)
 
 
continue;
 
 
printf("%d %d\n",s[i].x,s[i].y);
 
 
}
 
 
printf("%d %d\n",s[m-1].x,s[m-1].y);
 
 
}
 
 
return 0;
 
 
}