go排序-基数排序
2023-09-14 09:12:09 时间
package main
import (
"fmt"
"strconv"
)
func RadixSort(seq []int) {
// figures:位数,都是大于等于0的数
var max = 0
for _, s := range seq {
if s > max {
max = s
}
}
var maxFigures = 1
// 找到最大的那个值,看有几位数字 就要进行几轮排序
maxFigures = len(strconv.Itoa(max))
figuresSort(seq,maxFigures)
}
func figuresSort(seq []int, mfg int) {
num := 1
for i := 0; i < mfg; i++ {
var bucket [10][]int
var result []int
for _, s := range seq {
n := s/num % 10 // 轮流吧个位 十位 百位 放入各自的桶里面
bucket[n] = append(bucket[n], s)
}
// append
for i := 0; i < 10; i++ {
result = append(result, bucket[i]...)
}
for i := range seq {
seq[i] = result[i]
}
// 十位 百位 千位
num *= 10
}
}
func main() {
sequence := []int{6, 4, 7, 3, 9, 5, 1, 13, 0, 8, 22223, 10, 2}
fmt.Printf("before: %d", sequence)
RadixSort(sequence)
fmt.Printf("after:%d", sequence)
}
相关文章
- matlab axis画圆,使用MATLAB中axis实现图形坐标控制-Go语言中文社区
- Go语言内建方法之panic、recover (十五)
- 你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
- Go语言 参数传递究竟是值传递还是引用传递
- Go进阶(3):上下文context
- go-环境配置
- Go语言中常见100问题-#2 Unnecessary nested code
- Go 100 mistakes之不正确的值比较
- Go 100 mistakes之如何正确设置枚举值中的零值
- Go-并发编程-goroutine 和 channel(二)
- Go-包管理-go get(一)
- Go-包管理-go build(二)
- 哪些大公司正在使用Go语言
- Go语言反射规则浅析
- GO语言圣经-并发获取多个URL详解编程语言
- Go—go-cache包学习详解编程语言
- 语言Linux下驰骋Go语言之旅(linuxgo)
- Linux下安装Go环境指南(linux安装go环境)
- 环境Go 编译 在 Linux 环境中的体验(go编译linux)
- 轻松搞定Go语言连接MySQL(go连接mysql)
- 以Go语言操作MySQL:轻松运行数据库各种查询(go语言mysql)
- 语言结合SQL Server,Go谱写新篇章(sqlserver的go)
- 如何在Linux上安装Go语言?——简单易懂的指南(linux安装go语言)
- Go语言与Linux:全新的开发环境体验(go语言linux)
- 数据库探索Go语言与Oracle数据库的结合(go语言中的oracle)
- 新技术Go语言解析Oracle数据库日志(go解析oracle日志)
- Go语言操作Oracle数据库技术实践(go操作oracle)
- 程序Go语言调用Oracle数据库驱动程序指南(go oracle驱动)
- 语言Oracle中发挥神奇作用的Go语言(oracle中有go)
- 使用Go语言实现微信公众平台