美文网首页数据结构和算法分析
二分归并排序(分治法)

二分归并排序(分治法)

作者: 张的笔记本 | 来源:发表于2019-11-17 20:56 被阅读0次
int *Merge(int *a, int f, int m, int e)//将两个排好的合到一起
{
    int *b = new int[e - f + 1];
    int flag1 = f, flag2 = m + 1;
    for(int i = 0; i <= e - f; ++i){
        if(flag1 > m)
            b[i] = a[flag2++];
        else if(flag2 > e)
            b[i] = a[flag1++];
        else if(a[flag1] >= a[flag2])
            b[i] = a[flag2++];
        else if(a[flag1] < a[flag2])
            b[i] = a[flag1++];
    }
    for(int j = f, k = 0; j <= e; ++j)
        a[j] = b[k++];
    delete [] b;
    return a;
}
int *Merge_sort(int *a, int f, int e)
{
    if(e > f){
        int m = (e + f) / 2;
        Merge_sort(a, m + 1, e);
        Merge_sort(a, f, m);
        Merge(a, f, m, e);
    }
    return a;
}

原理参见 屈婉玲老师 算法设计与分析 ORZ

相关文章

  • python实现归并算法

    归并排序是采用分治法的一个非常典型的应用,另一个可以采用分治法的是快速排序,归并算法比快速排序速度稍低。归并排序的...

  • [算法导论]归并排序

    时间复杂度 《算法导论》2.3.1 分治法。 归并排序采用了分治法的递归排序。分治法:分解子问题,解决子问题,合并...

  • 12 基本排序算法:归并排序

    归并排序 原理 归并排序思想 该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(d...

  • 分治算法总结

    分治法学习总结 分治法是我们经常用到的算法,合理利用分治算法可以使我们更好的解决问题。我们在使用二分查找、归并排序...

  • 归并排序

    1、分治法 归并排序是完全遵循分治策略的排序算法。什么是分治法? 分治法,即将原问题分解为几个规模较小的子问题,递...

  • 基本算法——归并排序算法

    归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(分治法将问题分(d...

  • python实现归并排序(MergeSort)

    python实现【归并排序】(MergeSort) 算法原理及介绍 归并排序的核心原理是采用分治法(Divide ...

  • 归并排序(二路归并排序)

    归并排序的思路 归并排序是通过“归并”操作完成排序的,将两个或者多个有序子表归并成一个子表。归并排序是“分治法”的...

  • 数据结构--归并排序

    归并排序 (Merge Sort) 归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divid...

  • 算法复杂度分析

    排序算法复杂度 归并排序 采用了分治的方法,自顶向下(二分查找法后做合并) 排序算法的稳定性大家应该都知道,通俗地...

网友评论

    本文标题:二分归并排序(分治法)

    本文链接:https://www.haomeiwen.com/subject/ygrmictx.html