Go标准库阅读计划一 Perm(洗牌算法)
0x67cq opened this issue · 0 comments
0x67cq commented
func Perm(r *rand.Rand, n int) []int {
m := make([]int, n)
for i := 0; i < n; i++ {
j := r.Intn(i + 1)
fmt.Println("I:",i,"j:",j)
m[i] = m[j]
m[j] = i
}
return m
}
算法语言表述: 把当前列某一节点Y的值取给新加入节点X,然后维护一个0~N的递增队列,从这个递增队列里取一个最大的N赋给Y的值。