首页 > 代码库 > 华为机试—元素按奇偶排序
华为机试—元素按奇偶排序
题目:元素按奇偶排序
给定一个数组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; }
华为机试—元素按奇偶排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。