美文网首页
归并排序 Go 语言实现

归并排序 Go 语言实现

作者: 萧何爱英语 | 来源:发表于2018-07-30 23:28 被阅读0次

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。
时间复杂度: O(nlog(n))
空间复杂度: O(n)

func MergeSort(a []int) []int {
    if len(a) < 2 {
        return a
    }
    m := len(a) / 2
    l := MergeSort(a[:m])
    r := MergeSort(a[m:])
    return merge(l, r)
}

func merge(a, b []int) (c []int) {
    i, j := 0, 0
    for i < len(a) && j < len(b) {
        if a[i] <= b[j] {
            c = append(c, a[i])
            i++
        } else {
            c = append(c, b[j])
            j++
        }
    }
    c = append(c, a[i:]...)
    c = append(c, b[j:]...)
    return
}

相关文章

  • 1600万的整数排序pingcap-talent-plan(1)

    Merge Sort 问题描述 Go 语言实现一个16M的整数(int64)多路归并的数组排序 思路 将待排序数组...

  • 排序算法(插入排序、希尔排序、堆排序、归并排序)

    插入排序、希尔排序、堆排序、归并排序 --c语言实现 逐渐添加中....

  • 归并排序 Go 语言实现

    归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非...

  • 排序算法Java实现

    本文会通过Java语言实现:冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序,希尔排序...

  • 算法—排序篇2

    1、归并排序(Merging Sort) 归并排序(Merging Sort): 就是利用归并的思想实现排序⽅法....

  • 归并排序&快速排序

    归并排序 利用归并的思想实现排序方法,该算法采用经典的分治策略,分而治之。 代码实现 基础设置 归并排序 —— 非...

  • GO语言实现 一 归并排序

    这次我们介绍一下归并排序 一.归并排序 归并排序很好的体现了分治法的应用,排序的大致思路如下: 将数组切片为相同长...

  • go之sort

    正如sort的含义,go的sort包提供排序的能力,其内部实现了堆排、快排、插入排序、希尔排序和归并排序,而且针对...

  • 算法

    分类 排序 希尔排序 代码实现 归并排序 代码实现 查找

  • java归并排序

    归并排序什么是归并排序:图解归并排序归并排序有两种实现方式,一是基于递归,而是基于迭代1)基于递归的归并排序: 基...

网友评论

      本文标题:归并排序 Go 语言实现

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