题目描述
给你一个有n个整数的序列,a1,a2,a3,….an(下标从1开始)。
现在进行下列操作,将下标为奇数的元素按照升序排列,下标为偶数的元素按照降序排列,然后输出。
比如,给你n=8,序列为 2 6 7 1 3 8 9 4。
则下标为奇数的元素有2 7 3 9,排序后为2 3 7 9。
下标为偶数的元素有6 1 8 4,排序后为8 6 4 1。
则输出为 2 8 3 6 7 4 9 1
输入
输入数据包含多组。每一组测试数据的第一行为一个整数n(n<1000),表示序列的个数,第二行有以空格隔开的n个整数a1,a2,a3,…an。输入数据以n=0结束
输出
按要求输出,每一个序列占一行,每两个元素之间用空格隔开(每一行最后不应包含空格)。
样例输入
8
2 6 7 1 3 8 9 4
0
样例输出
2 8 3 6 7 4 9 1
参考代码
#include<stdio.h>
int main()
{
int n,b,c,d,e;
c=0;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break; else
{
int a[n];
for (b=1;b<=n;b++)
scanf("%d",&a[b]);
for (b=1;b<=n;b=b+2)
{
for (c=b;c<=n;c=c+2)
{
if(a[c]<a[b])
{
d=a[b];
a[b]=a[c];
a[c]=d;
}
}
}
for (b=2;b<=n;b=b+2)
{
for (c=b;c<=n;c=c+2)
{
if(a[c]>a[b])
{
d=a[b];
a[b]=a[c];
a[c]=d;
}
}
}
for (b=1;b<=n;b++)
printf("%d ",a[b]);
printf("n");
}}
return 0;
}
解析
暂无