选择排序是将数组中,如果下标为1的数小于小标为0的数,则进行交换,依次类推。
package main
import "fmt"
func main() {
arr := []int{10, 3, 0, -9, 2, 100, -22, 54, 23, 7}
fmt.Println(arr)
selectionSort(arr)
fmt.Println(arr)
}
// 选择排序
func selectionSort(arr []int) {
//当数组为空或数组长度小于2时,无法排序
if arr == nil || len(arr) < 2 {
return
}
n := len(arr)
for i := 0; i < n-1; i++ {
minIndex := i //默认0索引的值为最小值
for j := i + 1; j < n; j++ { //i+1与i进行比较
if arr[j] < arr[minIndex] { //如果后面的数大于前面的数,则将后面的索引值赋给min
minIndex = j
}
}
//进行交换
swap(arr, i, minIndex)
}
}
func swap(arr []int, i int, j int) {
arr[i], arr[j] = arr[j], arr[i]
}