Problem F: 排序(难度:4)
Description
给你n(1<n<=100)个数字。每两个数字相减可以得到两个数字,把最终得到的n*(n-1)个数字从小到大排序后输出。
eg.:
2
1 2
1 - 2 = -1,2 - 1 = 1。
两个数字1和2,可以得到-1和1.
Input
第一行:n
第二行:n个整数。
Output
按照题意在一行输出结果。
Sample Input
3
1 2 3
Sample Output
-2 -1 -1 1 1 2
HINT
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n,t,a[1000],b[10000],k=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
b[k]=a[j]-a[j+1];
b[k+1]=-1*b[k];
k=k+2;
}
}
for(i=0;i<k-1;i++)
{
for(j=0;j<k-1-i;j++)
{
if(b[j]>b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
}
for(i=0;i<k;i++)
{
if(i!=0)
{
printf(" %d",b[i]);
}
else
printf("%d",b[i]);
}
printf("\n");
return 0;
}