华为机试:元素按大小排序
2014-09-18 19:46
357 查看
给定一个数组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}
,如果数组长度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 <iostream> #include <algorithm> using namespace std; void diff_num(int arr1[],int len1,int arr2[]) { int max=arr1[len1-1]; int loc=len1/2; arr2[loc]=max; int p=loc-1; int q=loc+1; int i=len1-2; if(len1%2==1) { while((p>=0)&&(q<len1)) { arr2[p]=arr1[i]; i--; arr2[q]=arr1[i]; i--; p--; q++; } } else { while((p>=0)&&(q<len1)) { arr2[p]=arr1[i]; i--; arr2[q]=arr1[i]; i--; p--; q++; } arr2[0]=arr1[0]; } } int main() { int input[256]={0}; int output[256]={0}; int a,k=0,b,l=0; cin>>a; while(getchar()!='\n') { input[k++]=a; cin>>a; } input[k++]=a; sort(input,input+k); diff_num(input,k,output); for(int i=0;i<k;++i) cout<<output[i]; return 0; }
相关文章推荐
- [华为机试练习题]12.整型字符串排序
- 华为机试——去除重复子串并排序
- Swift按照数组元素出现的次数及大小排序
- 华为机试—整型数组中出现次数最多的元素
- java中,将map中的元素按照value值大小排序
- 华为招聘机试整理14:数组奇数偶数排序
- [华为机试真题][2014]62.去除重复字符并排序
- 华为机试:元素按奇偶排序
- 【华为】题目:有两个数组a,b,大小都为n,数组元素的值任意,无序; 要求: 通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小。
- 华为机试—元素按奇偶排序 (金字塔)
- 华为机试—元素异同比较
- 华为机试(扑克牌大小3.3)
- 华为机试在线训练-牛客网(32)成绩排序
- 华为机试--字符串排序
- 华为招聘机试整理2:判断一个数组的元素是否是回文
- 华为机试---成绩排序
- 牛客网_华为机试_026_字符串排序(字符字典码排序)
- 牛客网_华为机试_034_图片整理(字符排序)
- 华为机试训练:图片排序
- 华为机试在线训练-牛客网(16)字符串排序