Description
给定一个长度为n(1<=n<=200)的数列,将这个数列按如下规则排列。
最小数,最大数,次小数,次大数,......
Input
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
Output
输出一行,按从题目要求的顺序输出排序后的数列。
Sample Input
10 1 2 4 3 5 8 7 6 10 9
Sample Output
1 10 2 9 3 8 4 7 5 6
题目很简单,我的方法是先排序再错位输出
#include<stdio.h>
/**************函数区**************************/
void od(int a[],int n)//排序函数
{
int i,j,t;
for(i=0; i<n; i++)
for(j=i+1; j<n; j++)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
/****************输入区************************/
int main()
{
int n,i,j;
int a[205];
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
/*****************输出区***********************/
od(a,n);
if(n==1)
printf("%d",a[0]);
else if(n%2==0)
{
for(i=0, j=n-1; i<j-1; i++, j--)//错位输出
{
printf("%d %d ",a[j],a[i]);
}
printf("%d %d",a[j],a[i]);
}
else if(n%2!=0)
{
for(i=0, j=n-1; i<j-1; i++, j--)
{
printf("%d %d ",a[j],a[i]);
}
printf("%d",a[j]);
}
/****************************************/
}
手贱打上了abs()函数怎么交都是错的= =;
测试数据
input
1
1
output
1
input
3
1 2 3
output
1 3 2
input
3
1 -2 3
output
-2 3 1