华为机试—元素按奇偶排序
题目:元素按奇偶排序
给定一个数组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; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。