抉择排序的一种 Go 实现
package main
import "fmt"
// 抉择排序的外围是第 n 次将数组中前面 len(arr) - n 个元素的最大或者最小值与第 n 个元素进行替换
func selectSort(arr *[5]int){for j := 0; j < len(arr) - 1; j++ {// 循环次数为 len(arr) - 1
// 假如第一个元素的值最大 (降序排序)
max := arr[j]
maxIndex := j
// 遍历前面的元素进行比拟
for i := j + 1; i < len(arr); i++ {if max < arr[i] {max = arr[i] // 这里不能焦急替换值,只须要把最大的给 max
maxIndex = i
}
}
// 替换值
if maxIndex != j {arr[j], arr[maxIndex] = arr[maxIndex], arr[j]
}
fmt.Printf("第 %d 次 %v\n", j+1, *arr)
}
}
func main(){arr := [5]int{1,3,6,9,8}
selectSort(&arr)
}
输入:
第 1 次 [9 3 6 1 8]
第 2 次 [9 8 6 1 3]
第 3 次 [9 8 6 1 3]
第 4 次 [9 8 6 3 1]