您的位置:首页 > 其它

华为机试:元素按大小排序

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}
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: