package mainimport "fmt"func main() {var arr []int = []int{6,4,2,3,1,5}fmt.Println("排序数组: ",arr)fmt.Println()selectSort(arr)}func selectSort(arr []int) {for i := 0; i < len(arr) - 1; i++ {minIndex := ifor j := i; j < len(arr); j++ {if (arr[j] < arr[minIndex]) {minIndex = j // 最小值的位置}}fmt.Printf("第 %v 次排序,交换数组%v 与 %v 下标的位置. \n",i + 1, i, minIndex)swap(arr, i, minIndex)fmt.Println("排序后数组: ", arr)fmt.Println("--------------------------")}fmt.Printf("%v", arr)}func swap(arr []int, i int, j int) {tmp := arr[i]arr[i] = arr[j]arr[j] = tmp}
打印结果:
排序数组: [6 4 2 3 1 5]第 1 次排序,交换数组0 与 4 下标的位置.排序后数组: [1 4 2 3 6 5]--------------------------第 2 次排序,交换数组1 与 2 下标的位置.排序后数组: [1 2 4 3 6 5]--------------------------第 3 次排序,交换数组2 与 3 下标的位置.排序后数组: [1 2 3 4 6 5]--------------------------第 4 次排序,交换数组3 与 3 下标的位置.排序后数组: [1 2 3 4 6 5]--------------------------第 5 次排序,交换数组4 与 5 下标的位置.排序后数组: [1 2 3 4 5 6]--------------------------[1 2 3 4 5 6]
