排序算法之归并排序

来源:互联网 发布:win7虚拟桌面软件 编辑:程序博客网 时间:2024/05/26 17:48

目标算法:快速排序

应用范围:排序

算法代码:

#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>using namespace std;const int Maxn = 5005;int a[Maxn];int c[Maxn];int n;void Merge(int l,int m,int r){    int i = l;    int j = m + 1;    int k = l;    while(i <= m && j <= r)    {        if(a[i] > a[j])        {            c[k++] = a[j++];        }        else        {            c[k++] = a[i++];        }    }    while(i <= m) c[k++] = a[i++];    while(j <= r) c[k++] = a[j++];    for(int i=l;i<=r;i++)    {        a[i] = c[i];    }}void Merge_sort(int l,int r){    if(l < r)    {        int m = (l + r) >> 1;        Merge_sort(l,m);        Merge_sort(m+1,r);        Merge(l,m,r);    }}int main(){    while(~scanf("%d",&n))    {        for(int i=1;i<=n;i++)        {            scanf("%d",&a[i]);        }        ans = 0;        Merge_sort(1,n);    }}


0 0