给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[]数组中间两个位置偏右的那个位置上,然后在按照从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
#include <iostream>
#include <string>
using namespace std;
#define maxlen 10
void quicksort(int arr[],int front,int back){
int f = front,b = back;
if(front<back){
int temp = arr[front];
while(f<b){
while(temp>arr[b]&&f<b){
b--;
}
arr[f] = arr[b];
while(temp<arr[f]&&f<b){
f++;
}
arr[b] = arr[f];
}
arr[f] = temp;
quicksort(arr,front,f-1);
quicksort(arr,f+1,back);
}
}
void fun(){
int arr[] = {3,1,6,2,4,8};/{3,1,6,2,4,8,7};
int len = 6;
quicksort(arr,0,len-1)//快速排序
for(int i=0;i<len;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
int mid=(len+1)/2;
int left=mid-1,right=mid+1;
int res[maxlen];
res[mid]=arr[0];
for(i=1;i<len;i++){
if(i%2==1){
res[left--]=arr[i];
}else{
res[right++]=arr[i];
}
}
for(i=0;i<len;i++){
cout<<res[i]<<" ";
}
cout<<endl;
}
int main(){
fun();
return 0;
}