美文网首页
八大排序算法 - go语言实现

八大排序算法 - go语言实现

作者: ivan_cq | 来源:发表于2020-05-07 13:17 被阅读0次

  • 冒泡排序
func maoPao(list []int)  []int  {
    n := len(list)
    if n <= 1 {
        return list
    }
    flag := true
    for i:=0;i<n;i++ {
        for j:=0;j<n-i-1;j++ {
            if list[j] > list[j+1] {
                list[j],list[j+1] = list[j+1],list[j]
                flag = false
            }
        }
        if flag {
            break
        }
    }
    return list
}

  • 选择排序
func xuAnZe(list []int)  []int  {
    n := len(list)
    if n <= 1 {
        return list
    }
    for i:=1; i<n; i++  {
        min := i-1
        for j:=i;j<n;j++ {
            if list[j] < list[min] {
                min = j
            }
        }
        list[i-1],list[min] = list[min],list[i-1]
    }
    return list
}

  • 插入排序
func ChaRu(list []int)  []int  {
    n := len(list)
    if n <= 1 {
        return list
    }
    for i:=1;i<n;i++ {
        temp := list[i]
        for j:=i-1;j>=0;j-- {
            if list[j] > temp {
                list[j+1] = list[j]
                list[j] = temp
            } else {
                break
            }
        }
    }
    return list
}

  • 快速排序
func partition(list []int,start,end int)  int  {
    tag := list[end]
    i := start -1
    for j:=start;j<end ;j++ {
        if list[j] < tag {
            i++
            list[i],list[j] = list[j],list[i]
        }
    }
    list[i+1],list[end] = list[end],list[i+1]
    return i+1
}

func kuAiPai(list[]int,start,end int) []int  {
    if start < end {
        mid := partition(list,start,end)
        kuaiPai(list,start,mid-1)
        kuaiPai(list,mid+1,end)
    }
    return list
}

  • 归并排序
func GuiBing(list []int) []int  {
    if len(list) <= 1 {
        return list
    }
    n := len(list)
    mid := n/2
    left := GuiBing(list[0:mid])
    right := GuiBing(list[mid:n])
    result := merge(left,right)
    return result
}

func merge(l1 []int, l2 []int) []int {
    i,j := 0,0
    var result []int
    for i < len(l1) && j < len(l2) {
        if l1[i] < l2[j] {
            result = append(result,l1[i])
            i++
        } else {
            result = append(result,l2[j])
            j++
        }
    }
    if i == len(l1) {
        result = append(result,l2[j:]...)
    }
    if j == len(l2) {
        result = append(result,l1[i:]...)
    }
    return result
}

相关文章

  • 排序算法

    常见排序算法比较 参考资料:各种排序算法比较 参考资料:快速排序算法 必须知道的八大种排序算法【java实现】(一...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 一个Go语言程序示例

    本文档介绍来自《Go语言编程》的简单Go语言程序示例。 程序结构 本程序是一个排序算法的实现,程序结构如下所示 创...

  • 八大排序算法 - go语言实现

    冒泡排序 选择排序 插入排序 快速排序 归并排序

  • go语言实现排序算法

    冒泡排序算法 它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来最优时间复杂度O(N)...

  • 数据结构02-高效排序算法

    第二章 高效排序算法 第二章 高效排序算法一、快速排序基本思想快速排序图示一次划分C 语言实现Java 语言实现算...

  • [go语言 排序算法]

    快速排序 堆排序

  • Java 八大排序实现

    参考链接 本文只给出算法的Java实现版本,具体原理参考:八大排序算法。 公用代码 下面的swap()函数,是排序...

  • 一文搞定十大经典排序算法(Java实现)

    本文总结十大经典排序算法及变形,并提供Java实现。参考文章:十大经典排序算法总结(Java语言实现)快速排序算法...

  • iOS话题:算法-排序、二叉树-2020-05-13

    排序 排序是iOS算法中提及最多的话题,比较有名的有八大排序算法。 数据结构常见的八大排序算法(详细整理) 八大排...

网友评论

      本文标题:八大排序算法 - go语言实现

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