脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - GO语言中常见的排序算法使用示例

GO语言中常见的排序算法使用示例

2022-09-14 14:03Jeff的技术栈 Golang

这篇文章主要为大家介绍了GO语言中常见排序算法的使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

快排

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main
import (
    "fmt"
    "math/rand"
    "time"
)
func main() {
    li:=[]int{1,3,5,2,4,6,9,7}
    left:=0
    right:=len(li)-1
    fmt.Println(quick_sort(li,left,right))
}
func quick_sort(li []int, left,right int) []int {
    if left<right{
        mid := paitition(li,left,right)
        quick_sort(li,left,mid-1)
        quick_sort(li,mid+1,right)
    }
    return li
}
func paitition(li []int, left,right int) int {
    r := rand.New(rand.NewSource(time.Now().UnixNano()))
    res := r.Intn(right-left+1)+left
    li[left],li[res] = li[res],li[left]
    temp:=li[left]
    for left<right {
        for left<right && li[right]>=temp{
            right-=1
        }
        li[left]=li[right]
        for left<right && li[left]<=temp{
            left+=1
        }
        li[right]=li[left]
    }
    li[left]=temp
    return left
}

冒泡

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main
import "fmt"
func main()  {
    li:=[]int{1,3,5,2,4,6,9,7}
    fmt.Println(bubble_sort(li))
}
func bubble_sort(li[]int) []int {
    for i:=0;i<len(li)-1;i++ {
        res:=true
        for j:=0;j<len(li)-1-i;j++{
            if li[j]>li[j+1]{
                li[j],li[j+1]=li[j+1],li[j]
                res=false
            }
        }
        if res{
            return li
        }
    }
    return nil
}

选择排序

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main
import "fmt"
func main()  {
    li:=[]int{1,3,5,2,4,6,9,7}
    fmt.Println(select_sort(li))
}
func select_sort(li[]int) []int {
    for i:=0;i<len(li);i++ {
        min_loc := i
        for j:=i+1;j<len(li);j++ {
            if li[j]<li[min_loc] {
                min_loc=j
            }
        }
        if min_loc!=i {
            li[i],li[min_loc]=li[min_loc],li[i]
        }
    }
    return li
}

插入排序

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main
import "fmt"
func main()  {
    li:=[]int{1,3,201,5,2,100,4,6,9,7,2}
    fmt.Println(insert_sort(li))
}
func insert_sort(li[]int) []int {
    for i:=1;i<len(li); i++{
        tmp:=li[i]
        j := i-1
        for j>0 && li[j]>tmp {
            li[j+1]=li[j]
            j=j-1
        }
        li[j+1] = tmp
    }
    return li
}

希尔排序

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main
import "fmt"
func main()  {
    li:=[]int{1,3,201,5,2,100,4,6,9,7,2}
    fmt.Println(shell_sort(li))
}
func shell_sort(li[]int) []int {
    res := len(li)/2
    for res>0 {
        for i:=res;i<len(li);i++{
            tmp := li[i]
            j := i-res
            for j>=0 && tmp <li[j]{
                li[j+res] = li[j]
                j -= res
            }
            li[j+res] = tmp
        }
        res /=2  //res = res/2
    }
    return li
}

二分法查找

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main
import "fmt"
func main()  {
    li:=[]int{1,2,3,4,5,6,7,8}
    left:=0
    right:=len(li)-1
    value := 8
    fmt.Println(bin_search(li,value,left,right))
}
func bin_search(li[]int,value,left,right int) int {
    if left <=right{
        mid := (left+right)/2
        if li[mid] == value{
            return mid
        } else if li[mid]>value {
            return bin_search(li,value,left,mid-1)
        } else {
            return bin_search(li,value,mid+1,right)
        }
    } else {
        return 999
    }
}

以上就是GO语言中常见的排序算法使用示例的详细内容,更多关于GO语言排序算法的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/guyouyin123/p/14436227.html

延伸 · 阅读

精彩推荐
  • Golang如何组织 Go 代码?Go 作者的回答惊呆了

    如何组织 Go 代码?Go 作者的回答惊呆了

    我花了很多时间在生产应用程序的两个宠物项目中尝试不同的方法。在本文中,我将向你展示所有选择并告诉你它们的优缺点。阅读完这篇博文后,你将不...

    幽鬼8912021-11-02
  • GolangGolang如何调用Python代码详解

    Golang如何调用Python代码详解

    这篇文章主要给大家介绍了关于Golang如何调用Python代码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    白细胞5652020-05-20
  • Golanggolang gorm多条件筛选查询操作

    golang gorm多条件筛选查询操作

    这篇文章主要介绍了golang gorm多条件筛选查询操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    疯狂的鸭血12172021-03-09
  • GolangGo语言实现Fibonacci数列的方法

    Go语言实现Fibonacci数列的方法

    这篇文章主要介绍了Go语言实现Fibonacci数列的方法,实例分析了使用递归和不使用递归两种技巧,并对算法的效率进行了对比,需要的朋友可以参考下 ...

    脚本之家5032020-04-13
  • GolangGolang 实现插入排序的方法示例(2种)

    Golang 实现插入排序的方法示例(2种)

    这篇文章主要介绍了Golang 实现插入排序的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    邹友3712020-06-04
  • Golanggo语言执行等待直到后台goroutine执行完成实例分析

    go语言执行等待直到后台goroutine执行完成实例分析

    这篇文章主要介绍了go语言执行等待直到后台goroutine执行完成的方法,实例分析了Go语言中WaitGroup的使用技巧,需要的朋友可以参考下 ...

    aspku2382020-04-22
  • Golanggolang开发微框架Gin的安装测试及简介

    golang开发微框架Gin的安装测试及简介

    这篇文章主要为大家介绍了golang微框架Gin的安装测试及简介,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪...

    枫少文5302021-12-05
  • Golang详解Golang函数式选项(Functional Options)模式

    详解Golang函数式选项(Functional Options)模式

    什么是函数式选项模式,为什么要这么写,这个编程模式解决了什么问题呢?其实就是为了解决动态灵活的配置不同的参数的问题。下面通过本文给大家介...

    码农在新加坡11082022-01-25