原理
采用二分的思想,将排好序的数组在合并
void sort(int *arr,int l,int r){
if(l>=r){
return;
}
int m=(r-l)/2+l;
sort(arr,l,m);
sort(arr,m+1,r);
int s[10];
int k=0;
int i=l;
int j=m+1;
for(;i<=m&&j<=r;){
if(arr[i]<arr[j]){
s[k++]=arr[i++];
}else{
s[k++]=arr[j++];
}
}
while(i<=m)
s[k++]=arr[i++];
while(j<=r)
s[k++]=arr[j++];
for(int i=0,j=l;j<=r;i++,j++){ //s是临时数组,用来保存排好序的那一块数据,它
arr[j]=s[i]; //它的下标是从0开始,而arr的下标是从本层的左端开始
}