抉择排序的一种Go实现
package mainimport "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]