题目:元素按奇偶排序
给定一个数组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; }
时间: 2024-09-30 06:42:55