您的位置:首页 > 其它

nyoj8 一种排序

2015-08-11 16:10 447 查看
#include <stdio.h>
#include <stdlib.h>
struct Node
{
int num,l,w;
};
int cmp(const void *a,const void *b)
{
Node *c=(Node *)a;
Node *d=(Node *)b;
if(c->num!=d->num)
return c->num-d->num;
else if(c->l!=d->l)
return c->l-d->l;
else return c->w-d->w;
}
int main()
{
Node s[1010];
int k,n,i;
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
//int m=n;
for(i=0;i<n;i++)
{
int t;
scanf("%d%d%d",&s[i].num,&s[i].l,&s[i].w);
if(s[i].l<s[i].w)
{
t=s[i].l;
s[i].l=s[i].w;
s[i].w=t;
}
}
qsort(s,n,sizeof(s[0]),cmp);
printf("%d %d %d\n",s[0].num,s[0].l,s[0].w);
for(i=1;i<n;i++)
{
if(!(s[i].num==s[i-1].num&&s[i].l==s[i-1].l&&s[i].w==s[i-1].w))//不是删除,只是选择输出
printf("%d %d %d\n",s[i].num,s[i].l,s[i].w);
}
}
return 0;
}
用了快速排序,这是这个题的解决方法要点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: