华为机试—元素按奇偶排序 (金字塔)
2014-12-25 15:49
281 查看
题目:元素按奇偶排序
给定一个数组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}
给定一个数组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 compare(const void *p,const void *q){ return *(int *)q - *(int *)p; } int main() { int i,j,a,k=0; int input[100]; int output[100]; scanf("%d",&a); while(getchar()!='\n') { input[k++]=a; scanf("%d",&a); } input[k]=a; qsort(input,k+1,sizeof(int),compare); int f= (k+1)/2; output[f]=input[0]; for(i=1,j=1;i<=k;){ output[f-j]=input[i]; if((f+j)>k) break; output[f+j]=input[i+1]; i+=2; j++; } for(i=0;i<=k;i++) printf("%d ",output[i]); printf("\n"); return 0; }
相关文章推荐
- 华为机试—元素按奇偶排序
- 华为机试—元素按奇偶排序
- 华为机试-元素按奇偶排序
- 华为机试:元素按奇偶排序
- 华为机试——数字奇偶排序
- 华为招聘机试整理2:判断一个数组的元素是否是回文
- 华为机试—整型数组中出现次数最多的元素
- 华为机试—整型数组中出现次数最多的元素
- 华为机试:元素异同比较
- 华为机试——找出一个数组中满足2^n的元素个数
- 华为机试:元素按大小排序
- 华为机试—元素异同比较
- 华为机试---矩阵元素相乘
- 【华为机试】合唱队
- 2013华为实习生上机考试试题(一)华为机试 请设计函数int getTest(char input[]) ,检测输入字符串中是否包含连续的或者离散的test,test只出现一次
- 华为机试—输出包含名字的个数和字符串
- 2014华为机试——地铁换乘寻找最少车站数和排序算法
- 2014华为机试——两个城市之间的最多路径
- 华为机试:称砝码、矩阵乘法
- 2014年华为机试试题