c++,归并排序

#include
#include
#include
#include
#include
using namespace std;

void merge_sort(int *arr,int l,int r){
    if(r-l<=1)return ;
    int mid=(l+r)/2;
    merge_sort(arr,l,mid);
    merge_sort(arr,mid,r);
    int p1=l,p2=mid,k=0;
    int *temp=(int*)malloc(sizeof(int)*(r-l));
    while(p1         if(p2==r||p1             temp[k++]=arr[p1++];
        }else{
            temp[k++]=arr[p2++];
        }
    }
    for(int i=l;i     free(temp);
    return ;
}

int main(){
    int arr[10]={0,9,1,6,8,5,7,3,4,2};
    int l=0,r=sizeof(arr)/sizeof(arr[0]);
    merge_sort(arr,l,r);
    for(auto x:arr){
        cout<     }
    return 0;
}

你可能感兴趣的:(日常学习,c++,算法)