go实现基数排序算法
package radix
import "fmt"
func RadixSort(seq []int) {
// figures:位数,都是大于等于0的数
var max = 0
for _, s := range seq {
if s > max {
max = s
}
}
var maxFigures = 1
for max/10 > 0 {
maxFigures++
max /= 10
}
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
}
}
package main
import (
"algorithmDemo/sort/radix"
"fmt"
)
func main() {
ce := []int{6, 4, 7, 3, 9, 5, 1, 13, 0, 8, 23, 10, 2}
fmt.Printf("before: %d", sequence)
fmt.Println()
radix.RadixSort(sequence)
fmt.Printf("after:%d", sequence)
}