fisher_yates.go (273B)
1 package dsa 2 3 import ( 4 "math/rand/v2" 5 ) 6 7 func FisherYates(s []int) []int { 8 for i := int32(len(s) - 1); i > 0; i-- { 9 r := rand.Int32N(i) 10 s[i], s[r] = switchPos(s[i], s[r]) 11 } 12 13 return s 14 } 15 16 func switchPos(x int, y int) (int, int) { 17 z := x 18 x = y 19 y = z 20 21 return x, y 22 }