#include<iostream>
#define W_W 99999
#define LEN 10
using namespace std;
int* merge(int* A,int p,int q,int r){
int n1 = q-p+1,n2 = r-q+1;
int *L= (int*)malloc(sizeof(int)*n1),*R=(int*)malloc(sizeof(int)*n2);
for(int i=0;i<n1-1;i++)
L[i] = A[p+i];
for(int i=0;i<n2-1;i++)
R[i] = A[q+i];
L[n1-1] = W_W;
R[n2-1] = W_W;
int i=0,j=0;
for(int k=p;k<r;k++){
if(L[i]<=R[j]){
A[k]=L[i];
i++;
}else{
A[k]=R[j];
j++;
}
}
return A;
}
int* merge_sort(int* A,int p,int r){
if(p+1<r){
int q = (p+r)/2;
A = merge_sort(A,p,q);
A = merge_sort(A,q,r);
A = merge(A,p,q,r);
}
return A;
}
int main(){
int a[LEN];
for(int i=0;i<LEN;i++)
cin>>a[i];
int *a_back = merge_sort(a,0,LEN);
for(int i=0;i<LEN;i++)
cout<<a[i]<<" ";
system("pause");
return 0;
}
算法入门->合并排序->C/C++ 语言实现
最新推荐文章于 2019-04-22 14:03:27 发布