题目:元素按奇偶排序
给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置,
如果数组长度n为偶数,则将数组中最大的元素放到 output[]数组中间两个位置偏右的那个位置上,
然后再按从大到小的顺序,依次在最大元素放置的那个位置的两边,按照一左一右的顺序,依次存放剩下的数。
例如:input[] = {3, 6, 1, 9, 7} output[] ={3, 7, 9, 6, 1}; input[] = {3, 6, 1, 9, 7,8} output[] = {1, 6, 8, 9, 7, 3}
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int*)b-*(int*)a;
}
int main(int argc, char *argv[])
{
int input[100];
int output[100];
int t;
int i;
while(~scanf("%d",&t))
{
input[i++]=t;
}
int len=i;
qsort(input,len,sizeof(int),cmp);
int left=len/2-1;
int right=len/2;
for(int k=0;k<len;++k)
{
if(k%2==0)
output[right++]=input[k];
else
output[left--]=input[k];
}
for(i=0;i<len;++i)
{
printf("%d ",output[i]);
}
printf("\n");
return 0;
}