美文网首页
2.归并排序的优化

2.归并排序的优化

作者: 村上果树 | 来源:发表于2018-03-02 18:38 被阅读0次

主要介绍两个地方的优化:

// 递归使用归并排序,对arr[l...r]的范围进行排序
template<typename T>
void __mergeSort2(T arr[], int l, int r){

    //优化1:
    // 对于小规模数组,使用插入排序
    if( r - l <= 15 ){
        insertionSort(arr, l, r);
        return;
    }

    int mid = (l+r)/2;
    __mergeSort2(arr, l, mid);
    __mergeSort2(arr, mid+1, r);
    // 对于arr[mid] <= arr[mid+1]的情况,不进行merge
    // 对于近乎有序的数组非常有效,但是对于一般情况,有一定的性能损失
    //优化2:
    if( arr[mid] > arr[mid+1] )
        __merge(arr, l, mid, r);
}

对于优化1来讲,对于近乎所有的高级排序算法 都存在一种优化就是递归到底的情况,当我们递归到数据元素非常少时转而使用插入排序,数据比较少时,数组近乎有序的概率就比较大。

对于优化2来讲,是对于非常有序的数组才有效,但是对于一般情况,有一定的性能损失,损失在比较操作上。

相关文章

  • 常见的排序算法(2)

    要点 快速排序 归并排序 1.快速排序 2.归并排序

  • 排序算法

    约定 选择排序 冒泡排序 插入排序 希尔排序 归并排序1. 归并方法2. 自顶向下归并排序3. 自底向上归并排序 ...

  • 《大话数据结构》笔记二(排序)

    1 冒泡排序(优化)2 选择排序3 直接插入排序4 希尔排序5 堆排序6 归并排序(优化)7 快速排序(优化) 1...

  • 2.归并排序的优化

    主要介绍两个地方的优化: 对于优化1来讲,对于近乎所有的高级排序算法 都存在一种优化就是递归到底的情况,当我们递归...

  • 排序方法

    1.选择排序 2.插入排序 3.冒泡排序 归并排序归并排序5.快速排序快速排序

  • 基础算法

    二分查找 冒泡排序(优化) 归并排序 动态规划算法

  • 对于基础排序算法的简要总结

    本文主要分析排序算法中的选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序,以及其部分优化方式,部分代码示例...

  • 排序算法

    递归找到最小值排序 2.选择排序 归并排序 4.计数排序(哈希表)

  • 排序二:归并、快排

    文章结构 归并排序 快速排序 源码 1. 归并排序 1.1 什么是归并排序 归并排序的思想是:将待排序的区间平分成...

  • 算法与数据结构(三)高级排序算法:O(nlogn)的算法:归并排

    O(nlogn)的算法 优化改进的算法要比笨的算法快太多。 归并排序:Merge Sort 然后从下向上逐层归并。...

网友评论

      本文标题:2.归并排序的优化

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