使用递归方法实现C++的归并排序
#include<iostream>
using namespace std;
void MergeSort(int *array,int start,int end){
if(start==end-1)
return ;
int mid=(end+start)/2;
MergeSort(array,start,mid);
MergeSort(array,mid,end);
int *tmp=new int[end-start];
int left_idx=start,right_idx=mid,i=0;
while(left_idx<mid && right_idx<end){
if(array[left_idx] < array[right_idx])
tmp[i++]=array[left_idx++];
else
tmp[i++]=array[right_idx++];
}
while(left_idx<mid){
tmp[i++]=array[left_idx++];
}
while(right_idx<end){
tmp[i++]=array[right_idx++];
}
int idx=start;
for(i=0;i<end-start;i++,idx++){
array[idx]=tmp[i];
}
delete[] tmp;
}
int main(){
int test[10]={3,5,7,4,2,3,8,6,4,2};
MergeSort(test,0,10);
int i;
for(i=0;i<10;i++){
cout<<test[i]<<' ';
}
return 0;}
我的微信公众号