/*给定一个数组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 <algorithm>
#include <iostream>
void sort(int input[],int output[],int n)
{
std::sort(input,input+n,[](const int& left,const int& right)
{
return left>right;
}
);
int sig=-1,index=n/2,pos=1;;
output[index]=input[0];
for(int i=1;i<n;++i)
{
output[index+sig*pos]=input[i];
if(sig==1)
{
++pos;
sig=-1;
}
else
sig=1;
}
}
int main(int argc,char* argv[])
{
int arr[]={3,6,1,9,7,8};
int output[6];
sort(arr,output,6);
std::for_each(output,output+6,[](const int& i)
{
std::cout<<i<<" ";
}
);
std::cout<<std::endl;
return 0;
}