华为机试题--排序问题
2014-08-02 14:06
169 查看
题目来自:http://www.cnblogs.com/Trony/archive/2012/10/01/2709959.html 华为机试题目
给定一个数组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}
函数接口 void sort(int input[], int n, int output[])
五个数:
六个数:
给定一个数组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}
函数接口 void sort(int input[], int n, int output[])
#include<iostream> #include<string> using namespace std; void sort(int input[],int n,int output[]) { int t; for(int i=0;i<n-1;i++) { for(int j=i+1;j<n;j++) { if(input[i]<input[j]) { t=input[i]; input[i]=input[j]; input[j]=t; } } } for(int i=0,j=0;i<n;i++) { if(j==0) { output[n/2+j]=input[i]; j++; i++; } j*=-1; output[n/2+j]=input[i]; j*=-1; i++; output[n/2+j]=input[i]; j++; } } int main() { int input[]={3,6,1,9,7,8}; int output[6]={0,0,0,0,0,0}; int n=sizeof(input)/sizeof(input[0]); cout<<n<<endl; sort(input,n,output); for(int j=0;j<n;j++) { cout<<output[j]<<" "; } cout<<endl; system("pause"); return 0; }
五个数:
六个数:
相关文章推荐
- 2012届华为校园招聘上机考试题目第2题——排序问题
- 篮子放球问题(华为软件面试试题之一)
- 华为机试题——数组排序,且奇数存在奇数位置,偶数存在偶数位置
- 华为上机试题5(整数排序并删除一些元素)
- 华为OJ平台试题 ——字符串:字符串比较排序
- 华为一道机试题-操作系统任务调度问题
- 华为机试题:整数排序
- 2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)
- 数组试题---特殊的数组排序问题
- 华为上机试题:数字问题.
- 华为2013校招之哈工大威海 上机试题之一:报数问题:设有N 个人围坐一圈并按顺时针方向从1 到N 编号,从第S个人开始进行1 到M报数,报 数到第 M个人时,此人出圈,再从他的下一个人重新开始1 到 M的报数,如此进行下去直 到所有的人都出圈为止。现要打印出出圈次序。
- 华为机试题--任务调度问题
- 2012届华为上机试题之C语言-排序
- 2015届华为校园招聘机试题(去除重复字符并排序)
- 将奇偶数分别排序--华为机试题
- 华为机试题(11)--约瑟夫问题
- 九度oj 题目1007:奥运排序问题 【ZJU2010考研机试题3】【容易理解混乱】
- 2015年华为提前招聘机试题--奇数偶数排序(奇数偶数不同排序)
- 【华为机试题】操作系统任务调度问题
- 华为机试题C++-去除重复字符并排序