package main
import "log"
func main() {
sArr := []int{10, 9, 8, 11, 15, -1, 38, 40}
log.Println(sArr)
sArr = selectSort(sArr)
log.Println(sArr)
}
func selectSort(arr []int) []int {
length := len(arr)
if length < 2 {
return arr
}
min := 0
for i := 0; i < length-1; i++ {
min = i
for j := i + 1; j < length; j++ {
if arr[min] > arr[j] {
min = j
}
}
if i != min {
arr[min], arr[i] = arr[i], arr[min]
}
}
return arr
}
选择排序的思路大概是这样的。 顺序先取第一个位置上的数作为最小数,然后在剩下的数中找到一个最小的与第一个位置的数交换,然后依次取第二个位置上的数作为最小数,在剩下的数中找到一个最小的数与第二个位置上的数交换,如此直到最后。