题解 P1177 【【模板】快速排序】

似乎没什么人写归并。。。
补一发

int n,a[10000010],L_x[10000010],R_x[10000010];
int mergesort_Wzz(int a_x[],int l_x,int mid_x,int r_x)
{
    int n1_x,n2_x;
    n1_x=mid_x-l_x+1;//个数左&个数右
    n2_x=r_x-mid_x;
    for(int i=1;i<=n1_x;i++)
    {
        L_x[i]=a_x[i+l_x-1];
    }
    for(int i=1;i<=n2_x;i++)
    {
        R_x[i]=a_x[i+mid_x];
    }
    L_x[n1_x+1]=999999999;//很重要,因为可以避免爆一边的情况
    R_x[n2_x+1]=999999999;
    int q1_x=1,q2_x=1;
    for(int i=l_x;i<=r_x;i++)//合并两边
    {
        if(L_x[q1_x]<R_x[q2_x])
        {
            a_x[i]=L_x[q1_x];
            q1_x++;
        }
        else
        {
            a_x[i]=R_x[q2_x];
            q2_x++;
        }
    }
    return 0;
}
int merge_Wzz(int a_x[],int l_x,int r_x)
{
    if(l_x<r_x)
    {
        int mid_x=(l_x+r_x)/2;//分治,走左走完走右边,最后合并
        merge_Wzz(a_x,l_x,mid_x);//隐含递归边界
        merge_Wzz(a_x,mid_x+1,r_x);
        mergesort_Wzz(a_x,l_x,mid_x,r_x);
    }
    return 0;
}

这个是归并函数(注意注释)
上代码

#include<bits/stdc++.h>
using namespace std;
int n,a[10000010],L_x[10000010],R_x[10000010];
int mergesort_Wzz(int a_x[],int l_x,int mid_x,int r_x)
{
    int n1_x,n2_x;
    n1_x=mid_x-l_x+1;
    n2_x=r_x-mid_x;
    for(int i=1;i<=n1_x;i++)
    {
        L_x[i]=a_x[i+l_x-1];
    }
    for(int i=1;i<=n2_x;i++)
    {
        R_x[i]=a_x[i+mid_x];
    }
    L_x[n1_x+1]=999999999;
    R_x[n2_x+1]=999999999;
    int q1_x=1,q2_x=1;
    for(int i=l_x;i<=r_x;i++)
    {
        if(L_x[q1_x]<R_x[q2_x])
        {
            a_x[i]=L_x[q1_x];
            q1_x++;
        }
        else
        {
            a_x[i]=R_x[q2_x];
            q2_x++;
        }
    }
    return 0;
}
int merge_Wzz(int a_x[],int l_x,int r_x)
{
    if(l_x<r_x)
    {
        int mid_x=(l_x+r_x)/2;
        merge_Wzz(a_x,l_x,mid_x);
        merge_Wzz(a_x,mid_x+1,r_x);
        mergesort_Wzz(a_x,l_x,mid_x,r_x);
    }
    return 0;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    merge_Wzz(a,1,n);
    for(int i=1;i<=n;i++)
    {
        cout<<a[i]<<" ";
    }
}

题解虽好,注意shi名

posted @ 2018-12-27 21:43  G_A_TS  阅读(409)  评论(0编辑  收藏  举报