关闭

分治排序(有哨兵位)

259人阅读 评论(0) 收藏 举报
分类:

C++代码:

#include<climits>

void MERG(int *A,int p,int q,int r){
    int n = p - q + 1;
    int m = r - q;
    int L = new int [n+1];
    int R = new int [m+1];
    int i, j;
    for(i = 0;i < n - 1;i++)
        L[i] = A[p +i -1];
    for(j = 0;i < m - 1;j++)
        R[j] = A[q+j];
    L[n] = INT_MAX;
    R[N] = INT_MAX;
    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++;
        }
}

void MERGE_Sort(int *A,int p,int q)
{
    if(q < r){
        int q = (p + r) / 2;
        MERGE_Sort(A,p,q);
        MERGE_Sort(A,q+1,r);
        MERG(A,p,q,r);
    }
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:37981次
    • 积分:990
    • 等级:
    • 排名:千里之外
    • 原创:56篇
    • 转载:63篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论