抉择排序的一种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]
发表回复