归并排序

//归并排序 从小到大排序
#include<iostream>
using namespace std;

int arr[10]={10,88,3,7,6,38,87,90,1,19};
void Merge(int l,int m,int h);

void MergeSort(int low,int high)
{
    int mid;
    if(low<high)
    {
        mid=(low+high)/2;
        MergeSort(low,mid);
        MergeSort(mid+1,high);
        Merge(low,mid,high);
    }
    return;
}

void Merge(int low,int m,int h)
{
    int temparr[10]={0};
    int p=low,i=low,j=m+1;
    while(p<=m &&j<=h)
    {
       if(arr[p]<=arr[j])
       {
           temparr[i]=arr[p];
           p++;
       }
       else
       {
           temparr[i]=arr[j];
           j++;
       }
       i++;
    }
    if(p>m)
    {
        for(int k=j;k<=h;k++)
        {
            temparr[i]=arr[k];
            i++;
        }

    }
    else
    {
        for(int k=p;k<=m;k++)
        {
            temparr[i]=arr[k];
            i++;
        }
    }
    for(int k=low;k<=h;k++)
    {
        arr[k]=temparr[k];
    }
    return ;
}
int main()
{
    MergeSort(0,9);
    for(int i=0;i<10;i++)
       cout<<arr[i]<<endl;
    return 0;
}

原文地址:https://www.cnblogs.com/qingcheng/p/2026309.html