首页 > 代码库 > 【2012】数组(2)

【2012】数组(2)

给定一个数组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<algorithm>using namespace std;bool cmp(int a,int b){ return(a>b);}void sort(int input[], int n, int output[]){   /*int small ;   //冒泡排序法    for(int i=1;i<n;i++)   {        for(int j=0;j<n-i;j++)       {        if(input[j]<input[j+1])        {         int temp = input[j];         input[j] = input[j+1];         input[j+1]=temp;        }       }      }*/    sort(input,input+n,cmp);//在自己写的函数名是sort的情况下,也可以使用#include<algorithm>里面的sort函数  for(int i=0;i<n;i++)       cout<<input[i]<<" ";    int mid = n/2;   output[mid]=input[0];   int iBig = mid-1,iSmall = mid+1;      for(int i=1;i<n;)   {    if(iBig>=0)     output[iBig--]=input[i++];    if(iSmall<n)     output[iSmall++]=input[i++];   }}