
选择排序
选择排序是一种简单直观的排序算法,基本原理如下:
对于给定的一组记录,经过第一轮比较后得到最小记录,然后将该记录与第一个记录的位置进行交换,接着对不包括第一个记录一位的其他记录进行第二轮比较,得到最小记录并与第二个记录进行位置交换,重复该过程,直到进行比较的记录只有一个时为止
package main
import "fmt"
func SelectSort(data []int) {
llen := len(data)
for i := 0; i < llen; i++ {
tmp := data[i]
flag := i
for j := i + 1; j < llen; j++ {
if data[j] < tmp {
tmp = data[j]
flag = j
}
}
if flag != i {
data[flag] = data[i]
data[i] = tmp
fmt.Printf("排序过程: %v\n", data)
}
}
}
func main() {
data := []int{5, 6, 3, 8, 2, 4, 7, 9, 0}
SelectSort(data)
fmt.Println("排序结果如下:")
fmt.Println(data)
}
每一趟排序结果
[administrator@administrator-dev 20210330]$ go run 00.go
排序过程: [0 6 3 8 2 4 7 9 5]
排序过程: [0 2 3 8 6 4 7 9 5]
排序过程: [0 2 3 4 6 8 7 9 5]
排序过程: [0 2 3 4 5 8 7 9 6]
排序过程: [0 2 3 4 5 6 7 9 8]
排序过程: [0 2 3 4 5 6 7 8 9]
排序结果如下:
[0 2 3 4 5 6 7 8 9]