MergeSort 的实现

来源:互联网 发布:矩阵数据分析法 编辑:程序博客网 时间:2024/05/18 00:58

void Merge(int A[], int p, int q, int r){int *L = new int[q-p+2]();//p...qint *R = new int[r-q]();//q+1...rfor (int i=0;i<q-p+1;i++){L[i]=A[p+i];}L[q-p+1]=99999999;for (int i=0;i<r-q;i++){R[i]=A[q+1+i];}R[r-q]=99999999;int lp = 0;int rp = 0;for (int k = p; k<r+1; k++){if (L[lp]<=R[rp]){A[k] = L[lp];lp++;} else{A[k] = R[rp];rp++;}}}void MergeSort(int A[], int p, int r){if (p<r){int q = (p+r)/2;MergeSort(A,p,q);MergeSort(A,q+1,r);Merge(A,p,q,r);}}

    //Test for Merge Sort
    //int A[8]={213,231,345,654,4321,23,435,2134};
    //MergeSort(A,0,7);
    //for (int i=0; i < 8; i++)
    //{
    //    cout<<A[i]<<",";
    //}
    //cout<<endl;