您的位置:首页 > 其它

利用qsort二级排序

2015-07-20 16:15 155 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: