算法入门->合并排序->C/C++ 语言实现

来源:互联网 发布:无root修改手机mac地址 编辑:程序博客网 时间:2024/06/09 23:52
#include<iostream>#define W_W 99999#define LEN 10using 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;}

0 0
原创粉丝点击