1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| package main
import "fmt"
func main() { s := []int{3, 5, 4, 0, 1, 2, 6} for _, v := range s { fmt.Printf("%d ", v) } fmt.Printf("\nafter:\n")
var i int for s[i] != 0 { i++ } s[0], s[i] = s[i], s[0]
i = 1
for { for s[i] != i { s[s[i]], s[0] = s[0], s[s[i]] s[i], s[s[i]] = s[s[i]], s[i] s[i], s[0] = s[0], s[i] } if i == len(s)-1 { break } i++ }
for _, v := range s { fmt.Printf("%d ", v) } }
|