这个题本来没必要贴出来,但发现了qsort竟然还可以对结构排序啊
说到底还是对qsort()的原理不清楚,只知道用。最近烦心事也一大堆,不想深究,以后有状态了再说吧。
下面是代码,开始用qsort直接排一个int,结果当然乱套,后来改为2*sizeof(int),奇迹出现了。。
这东西很高端啊。
/**
* Author: Gneveek
* Data: 2011-10-9
* Descripition: hdu - 2020
*/
#include <stdio.h>
#include <stdlib.h>
struct a{
int x;
int y;
};
int int_cmp(const void *a, const void *b)
{
return *(int *)b - *(int *)a;
}
int main()
{
//freopen("C:\\in.txt","r",stdin);
struct a data[105];
int n,i;
while(scanf("%d",&n), n != 0)
{
for(i=0; i<n; i++)
{
scanf("%d",&data[i].x);
if(data[i].x < 0)
{
data[i].y = 1;
data[i].x = -data[i].x;
}
else
data[i].y = 0;
}
qsort(data,n,2*sizeof(int),int_cmp);
for(i=0; i<n; i++)
{
if(data[i].y == 1)
{
if(i == n-1)
printf("-%d",data[i].x);
else
printf("-%d ",data[i].x);
}
else
{
if(i == n-1)
printf("%d",data[i].x);
else
printf("%d ",data[i].x);
}
}
putchar('\n');
}
return 0;
}