递归:
#include<iostream>
using namespace std;
void Merge(int *s,int *temp,int left,int mid,int right){
int lp = left;
int rp = mid + 1;
int k = 0;
while(lp <= mid && rp <= right){
if(s[lp] <= s[rp])temp[k++] = s[lp++];
else temp[k++] = s[rp++];
}
if(lp <= mid)
for(;lp <= mid;lp++)temp[k++] = s[lp];
else
for(;rp <= right;rp++)temp[k++] = s[rp];
}
void Copy(int *s,int *temp,int left,int right){
int k = 0;
for(;left <= right;left++)s[left] = temp[k++];
}
void MergeSort(int *s,int left,int right){
if(left < right){
int *temp = new int[20];
int mid = (left + right) / 2;
MergeSort(s,left,mid);
MergeSort(s,mid + 1,right);
Merge(s,temp,left,mid,right);
Copy(s,temp,left,right);
}
}
void Print(int *s,int len