冒泡排序和选择排序(Go语言实现)

简介: 冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。

冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。 
选择排序的平均时间复杂度比冒泡排序稍高,下面我们使用GO语言进行编写

冒泡排序

func bubble(num []int64) []int64 {
    flag := true
    for i := len(num) - 1; i >= 0; i-- {
        for j := 0; j < i; j++ {
            //冒泡,泡沫往上越大,较大的数上移
            if num[j] > num[j + 1] {
                Swap(num, j, j + 1)
                flag=false
            }
        }
        //优化不必要的交换
        if flag {
            break
        }
    }

    return num
}



func Swap(num []int64, i int, j int) {
    temp := num[i]
    num[i] = num[j]
    num[j] = temp
}

选择排序

func Select(num []int64) []int64 {
    for i := 0; i < len(num) - 2; i++ {
        min:=num[i]
        local:= i
        for j := i + 1; j <= len(num)-1; j++ {
            if min>num[j] {
                min=num[j]
                local=j
            }
        }
        Swap(num,local,i)
    }
    return num
}

func Swap(num []int64, i int, j int) {
    temp := num[i]
    num[i] = num[j]
    num[j] = temp
}

 

 

package main

import "fmt"
import "./sel"
//变量在前,类型在后
func main() {
    num :=[]int64{11, 5, 25, 3, 42, 27,53,82,11, 2}
    //bub.bubble(num)
    sel.Select(num)
    for i ,_:=range num {
        fmt.Print(i)
    }
}

 

目录
相关文章
|
22天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
36 7
|
22天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
22天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
95 71
|
21天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
102 67
|
2天前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
28 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
22天前
|
存储 Go
go语言中映射
go语言中映射
34 11
|
23天前
|
Go 索引
go语言使用索引遍历
go语言使用索引遍历
29 9
|
23天前
|
Go 索引
go语言使用range关键字
go语言使用range关键字
29 7
|
23天前
|
Go 索引
go语言修改元素
go语言修改元素
28 6
|
14天前
|
Go 数据安全/隐私保护 UED
优化Go语言中的网络连接:设置代理超时参数
优化Go语言中的网络连接:设置代理超时参数