美文网首页
算法解析之归并排序

算法解析之归并排序

作者: dongwenbo | 来源:发表于2017-03-30 15:50 被阅读42次
归并排序

算法思路:
1、将整个序列递归分解为不可分解的单元素序列,这时各个单元素序列有序(递推过程)
2、再将各个单元素序列二路归并(回归过程)

C++:

template <typename T>
void merge(T arr[],int low,int mid,int high){
    //复制到一个临时数组
    T temp[high - low + 1];
    for (int i = low; i <= high; i++) {
        temp[i-low] = arr[i];
    }
    //i和j分别指示两个有序序列的开始
    int i = 0,j = mid + 1 - low;

    //挑出小的归并到arr,同时移动索引,从临时数组中往arr中复制
    for (int k = low; k <= high; k++) {
        //保证索引有效性
        if (i > mid - low) {
            arr[k] = temp[j++];
        }else if (j > high - low){
            arr[k] = temp[i++];
        }else if (temp[i]<temp[j]) {
            arr[k] = temp[i++];
        }else{
            arr[k] = temp[j++];
        }
    }
}
//归并排序
template <typename T>
void mergeSort(T arr[],int low,int high){
    if (high>low) {
        int mid = low + (high - low)/2;
        mergeSort(arr, low, mid);
        mergeSort(arr, mid+1, high);
        merge(arr, low, mid, high);
    }
}

相关文章

  • 2018-06-30

    排序算法之归并排序 归并排序算法是排序算法中的经典算法之一,其核心思想是利用归并的思想实现的排序方法,该算法采用经...

  • 归并排序

    图解排序算法(四)之归并排序 基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用...

  • 归并排序

    来源:图解排序算法(四)之归并排序 - dreamcatcher-cx - 博客园 归并排序(MERGE-SORT...

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • 排序算法之归并排序

    归并排序(Merge Sort) 归并排序是利用归并的思想实现排序的方式,该算法采用的是经典的分治算法 归并排序过...

  • 归并排序 merge sort

    归并排序 时间复杂度:平均、最好、最坏都是O(nlogn)空间复杂度:O(n)稳定性:稳定 算法解析 归并排序是使...

  • 排序算法

    小胡子哥:聊一聊排序算法白话经典算法系列之五 归并排序的实现

  • 归并排序

    归并排序 这个排序算法是建立在归并操作上的一种有效的排序算法,算法主要采用分治法,归并排序的算法复杂度为O(n*l...

  • 第三章:高级排序算法

    归并排序算法(mergeSort) 算法思想:Python使用函数实现: 自底向上的归并排序算法 算法思想:Pyt...

  • 算法入门——归并排序、希尔排序

    上篇文章我们学习了算法入门——堆排序,这篇文章我们学习算法入门——归并排序、希尔排序。 归并排序 归并排序是将一个...

网友评论

      本文标题:算法解析之归并排序

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