go实现基数排序算法

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)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值