go实现选择排序
选择排序:对于给定的一组记录,经过第一轮比较之后得到最小记录,然后将该记录与第一个记录的位置进行交换;接着对对不包括第一个记录以外的其他记录进行第二轮比较,得到的最小记录与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个为止。
具体实现如下:
package main
import "fmt"
func SelectSort(data []int) {
length := len(data)
for i := 0; i < length; i++ {
tmp := data[i]
flag := i
for j := i + 1; j < length; j++ {
if data[j] < tmp {
tmp = data[j]
flag = j
}
}
if flag != i {
data[flag] = data[i]
data[i] = tmp
}
fmt.Println(data) //为了看具体排序的过程
}
}
func main() {
data := []int{44, 38, 65, 97, 76, 14, 27, 48}
SelectSort(data)
fmt.Println(data)
}
输出结果如下:
[14 38 65 97 76 44 27 48]
[14 27 65 97 76 44 38 48]
[14 27 38 97 76 44 65 48]
[14 27 38 44 76 97 65 48]
[14 27 38 44 48 97 65 76]
[14 27 38 44 48 65 97 76]
[14 27 38 44 48 65 76 97]
[14 27 38 44 48 65 76 97]
[14 27 38 44 48 65 76 97]