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

你可能感兴趣的:(go实现基数排序算法)