#include <iostream>
#include <stdio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void merge(int a[],int low,int mid,int high){
int b[100];
for(int i=low;i<high+1;i++){
b[i]=a[i];
}
int i=low;
int j=mid+1;
int k=low;
while(i<mid+1&&j<high+1){
if(b[i]>b[j]){
a[k++]=b[j++];
}else{
a[k++]=b[i++];
}
}
//循环结束后,会有一个没有遍历的数组
while(i<mid+1){
a[k++]=b[i++];
}
while(j<high+1){
a[k++]=b[j++];
}
}
void mergeSort(int a[],int low,int high){
if(low<high){
int mid=(low+high)/2;
mergeSort(a,low,mid);
mergeSort(a,mid+1,high);
merge(a,low,mid,high);
}
}
int main(int argc, char** argv) {
char ch;
int i,n=0;
int a[100];
printf("请输入你想要排序的数组\n");
do{
scanf("%d",&a[i]);
i++;
n++;
}while((ch=getchar())!='\n');
mergeSort(a,0,n);
printf("排序后的数组\n");
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}