#include<bits/stdc++.h>
using namespace std;
void guibing_sort(int array[],int n);
void sort(int array[],int left,int right,int tmp[]);
void merge(int array[],int left,int right,int tmp[]);
int main(){
int a[10]={3,2,1,6,4,5,9,8,7,11000};
guibing_sort(a,10);
int i;
for(i=0;i<10;i++)
cout<<' '<<a[i];
}
void guibing_sort(int array[],int n){
int tmp[n];
sort(array,0,n-1,tmp);
}
void sort(int array[],int left,int right,int tmp[]){
int mid = (left+right)/2;
if(left<right){
sort(array,left,mid,tmp);
sort(array,mid+1,right,tmp);
merge(array,left,right,tmp);
}
}
void merge(int array[],int left,int right,int tmp[]){
int mid = (left+right)/2;
int i=left;
int j=mid+1;
int k=left;
while(i<=mid && j<=right){
if(array[i]>array[j]){
tmp[k++] = array[j];
j++;
}
else{
tmp[k++] = array[i];
i++;
}
}
while(i<=mid)
tmp[k++] = array[i++];
while(j<=right)
tmp[k++] = array[j++];
k=left;
while(left<=right)
array[k++]=tmp[left++];
}