必须和数据状况强相关,量身定制
package Sort
import (
"fmt"
"math"
"testing"
)
//计数排序 人的年龄问题 < 200 岁
func CountSort(arr []int){
if len(arr)==0 || len(arr)<2 {
return
}
max := math.MinInt64
for i:=0;i<len(arr);i++ {
max=Max(max,arr[i])
}
bucket:=make([]int,max+1)
for i:=0;i<len(arr);i++ {
bucket[arr[i]]++
}
//fmt.Println(bucket)
i:=0
for j:=0;j<len(bucket);j++{
for bucket[j] > 0 {
bucket[j]--
arr[i]=j
i++
}
}
}
func TestCountSort(t *testing.T) {
arr:=[]int{32,43,66,9,43,32,32,19,90}
CountSort(arr)
fmt.Println(arr)
}