归并排序类似二分,并且运用了递归
#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; }