Go 语言

2025年04月19日更新 4 人订阅
原价: ¥ 2 限时优惠
专栏简介 数据结构 in Golang:Hash Tables(哈希表) 算法 in Golang:Quicksort(快速排序) 算法 in Golang:Recursion(递归) 用Go语言构建分布式系统:服务注册、发现与日志管理实践 算法 in Golang:Selection sort(选择排序) Go语言之基本数据类型 深入探索Go语言:从初识到实践 实战:Go语言项目之使用JWT实现用户认证 算法 in Go:Binary Search(二分查找) 算法 in Golang:Breadth-first search(BFS、广度优先搜索) 算法 in Golang:D & C(分而治之) Go语言(Golang)编写最简单的命令行工具 深入探讨 Go 语言中的自定义 Zap 日志 Go语言详解:实现MySQL数据库的增删改查操作 深入解析Go语言Gin框架:路由注册与中间件源码剖析 Go 语言之在 Gin 框架中使用 Zap 实现高效日志管理 Go 语言中 zap 日志库的高效使用指南 Go 语言日志系统自定义:精细化日志管理与应用示例 Go 语言之搭建通用 Web 项目开发脚手架 Go语言结构体(struct)详解:定义、使用与JSON编码 探索 Go 语言的无类设计:从 Struct 到组合的优雅之道 地鼠工厂的秘密:解锁Go语言中goroutine的并发魔法 Go 并发编程实战:从互斥锁到 Goroutine 的优雅之道 用 Go 语言打造高效 TCP 扫描器:从入门到并发优化 gogen:一键生成 Go 项目,开发者的效率利器 深入剖析 Go 接口底层实现:从 eface 到 iface(基于 Go 1.24 源码) Go并发实战:5协程随机数求和 Go 开发必备:解锁 Viper 配置管理的正确姿势

算法 in Golang:Selection sort(选择排序)

算法inGolang:Selectionsort(选择排序)SelectionSort(选择排序)假设有一个数组,它里面有6个元素,它的顺序是乱的,现在我们想对这个数组进行排序,就是从小到大进行排序。选择排序是挨个遍历元素,把最小的放在最前面,再把剩余的遍历,把最小的放在后面,依此类推

算法 in Golang:Selection sort(选择排序)

Selection Sort(选择排序)

假设有一个数组,它里面有6个元素,它的顺序是乱的,现在我们想对这个数组进行排序,就是从小到大进行排序。

选择排序是挨个遍历元素,把最小的放在最前面,再把剩余的遍历,把最小的放在后面,依此类推,最终就会得到一个从小到大排序好的数组。

复杂度:O(n²)

  • O(n²):相当于是 n 次 O(n)
  • 其实是 n, n-1, n-2, n-3, n-4, n-5
  • 为什么不是 O(1/2n²)
  • 大 O 标记法忽略了常数系统 1/2

创建文件

~/Code/go via 🐹 v1.20.3 via 🅒 base
➜ mcd selectionSort

Code/go/selectionSort via 🐹 v1.20.3 via 🅒 base
➜ go mod init selectionSort
go: creating new go.mod: module selectionSort

Code/go/selectionSort via 🐹 v1.20.3 via 🅒 base
➜ c

Code/go/selectionSort via 🐹 v1.20.3 via 🅒 base
➜

算法实现

package main

import "fmt"

func main() {
 arr := []int{5, 7, 1, 8, 3, 2, 6, 4, 9}
 arr = selectiongSort(arr)

 fmt.Println("arr: ", arr)
}

func findSmallest(arr []int) int {
 smallest := arr[0]
 smallest_index := 0
 for i := 0; i < len(arr); i++ {
  if arr[i] < smallest {
   smallest = arr[i]
   smallest_index = i
  }
 }
 return smallest_index
}

func selectiongSort(arr []int) []int {
 result := []int{}
 count := len(arr)
 for i := 0; i < count; i++ {
  smallest_index := findSmallest(arr)
  result = append(result, arr[smallest_index])
  arr = append(arr[:smallest_index], arr[smallest_index+1:]...)
 }

 return result
}

运行

Code/go/selectionSort via 🐹 v1.20.3 via 🅒 base 
➜ go run .
arr:  [1 2 3 4 5 6 7 8 9]

Code/go/selectionSort via 🐹 v1.20.3 via 🅒 base 
➜ 
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论