请用Golang写出基数排序的代码
时间: 2023-05-13 19:05:58 浏览: 63
当然可以,以下是基数排序的 Golang 代码:
```
package main
import (
"fmt"
)
func radixSort(arr []int) []int {
if len(arr) == 0 {
return arr
}
// 找到最大值
max := arr[0]
for _, val := range arr {
if val > max {
max = val
}
}
// 计算最大值的位数
digit := 0
for max > 0 {
max /= 10
digit++
}
// 按位数进行排序
for i := 0; i < digit; i++ {
buckets := make([][]int, 10)
for _, val := range arr {
num := (val / int(pow(10, i))) % 10
buckets[num] = append(buckets[num], val)
}
arr = []int{}
for _, bucket := range buckets {
arr = append(arr, bucket...)
}
}
return arr
}
func pow(x, y int) int {
res := 1
for i := 0; i < y; i++ {
res *= x
}
return res
}
func main() {
arr := []int{170, 45, 75, 90, 802, 24, 2, 66}
fmt.Println(radixSort(arr))
}
```
希望能够帮到你!