美文网首页
MergeSort归并排序

MergeSort归并排序

作者: myleosu | 来源:发表于2019-04-03 00:04 被阅读0次

归并排序的主要是采用的分治的思想,将一个区间不断的二分划分,然后做归并操作

代码

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 100010;

void Merge(int* a,int l,int r,int* res){
    int len = (r-l)/2 + 1;
    int left = l;
    int right = l+len;
    int res_index = l;
    while(left<l+len && right<r+1){
        if(a[left] <= a[right]) res[res_index++] = a[left++];
        else                    res[res_index++] = a[right++];
    }
    while(left<l+len){ res[res_index++] = a[left++]; }
    while(right<r+1){  res[res_index++] = a[right++]; }
    return;
}

void MergeSort(int *a,int l,int r,int *res){
    if(l<r){
        int len = (r-l)/2;
        MergeSort(a,l,l+len,res);
        MergeSort(a,l+len+1,r,res);
        Merge(a,l,r,res);
        for(int i = l;i<=r;i++)
            a[i] = res[i];
    }
    return;
}

int a[MAXN],res[MAXN];

int main(){
    int n;
    scanf("%d",&n);
    for(int i = 0;i<n;i++)
        scanf("%d",&a[i]);
    MergeSort(a,0,n-1,res);
    for(int i = 0;i<n;i++)
        printf("%d ",a[i]);
    return 0;
}

相关文章

  • 归并排序的递归实现与非递归实现

    归并排序 归并排序图 递归实现简介代码示例 mergesort(left,right,**a){ if(l...

  • 算法分析与设计复习

    1、排序算法 QuickSort 快速排序 MergeSort 归并排序 HeapSort 堆排序 BubbleS...

  • 排序算法(2):归并排序

     归并排序:归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,...

  • python归并排序--递归实现

    归并排序: 归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,...

  • 排序算法-5--- 归并排序

    归并排序 Merge sort 1、概念 归并排序(英语:Merge sort,或mergesort),是创建在归...

  • 归并排序

    什么是归并排序? 归并排序(Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,...

  • python实现归并排序(MergeSort)

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

  • 归并排序

    归并排序 归并排序(Mergesort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分...

  • 第三章:高级排序算法

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

  • 时间复杂度为O(nlogn)的算法

    mergeSort 口诀: 左拆分,左合并,右拆分,右合并,最后合并左右。 归并排序的逻辑 归并排序的战略(宏观)...

网友评论

      本文标题:MergeSort归并排序

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