C语言二路归并排序算法 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    写了个二路归并的归并排序小代码,直接贴上来

    /*

    file:quick.cpp

    author:www.5dkx.com

    */

    #include

    using namespace std;

    void Merge(int a[],int low,int mid,int high,int b[]);

    void MSort(int a[],int low,int high,int b[]);

    void main()

    {

    int a[]={4,5,9,10,51,6,46,36,6,56,67,45,36};

    int b[13];

    MSort(a,0,12,b);

    for(int i=0;i<13;i++)

    cout<

    cout<

    for(int j=0;j<13;j++)

    cout<

    cout<

    }

    void Merge(int a[],int low,int mid,int high,int b[])

    {

    int i=low,j=mid+1,k=low;

    while((i<=mid)&&(j<=high))

    {

    if(a[i]<=a[j])

    {

    b[k]=a[i];

    i++;

    }

    else

    {

    b[k]=a[j];

    j++;

    }

    k++;

    }

    while(i<=mid)

    {

    a[k]=a[i];

    k++;

    i++;

    }

    while(j<=high)

    {

    a[k]=a[j];

    k++;j++;

    }

    }

    void MSort(int a[],int low,int high,int b[])

    {

    if(low==high)

    b[low]=a[low];

    else

    {

    int mid=(low+high)/2;

    MSort(a,low,mid,b);

    MSort(a,mid+1,high,b);

    Merge(a,low,mid,high,b);

    }

    }

最新文章