归并排序类似二分,并且运用了递归
#include<iostream>
using namespace std;
int a[10]={1,3,5,9,8,4,7,6,2,10};
int b[10];
void Merge(int a[],int begin,int mid,int end,int temp[]){
int t=0,t1=begin,t2=mid+1;
while(t1<=mid&&t2<=end){
if(a[t1]<a[t2]){
temp[t++]=a[t1++];
}
else{
temp[t++]=a[t2++];
}
}
while(t1<=mid){
temp[t++]=a[t1++];
}
while(t2<=end){
temp[t++]=a[t2++];
}
for(int i=0,j=begin;i<t;i++,j++){
a[j]=temp[i];
}
}
void MergeSort(int a[],int begin,int end,int temp[])
{
if(begin<end){
int mid=(begin+end)/2;
MergeSort(a,begin,mid,temp);
MergeSort(a,mid+1,end,temp);
Merge(a,begin,mid,end,temp);
}
}
int main(){
// int size=sizeof(a)/sizeof(int);
MergeSort(a,0,9,b);
for(int i=0;i<10;i++){
cout<<a[i]<<" ";
}
return 0;
}#include<iostream>
using