1. package main
    2. import "fmt"
    3. func main() {
    4. var arr []int = []int{6,4,2,3,1,5}
    5. fmt.Println("排序数组: ",arr)
    6. fmt.Println()
    7. selectSort(arr)
    8. }
    9. func selectSort(arr []int) {
    10. for i := 0; i < len(arr) - 1; i++ {
    11. minIndex := i
    12. for j := i; j < len(arr); j++ {
    13. if (arr[j] < arr[minIndex]) {
    14. minIndex = j // 最小值的位置
    15. }
    16. }
    17. fmt.Printf("第 %v 次排序,交换数组%v 与 %v 下标的位置. \n",i + 1, i, minIndex)
    18. swap(arr, i, minIndex)
    19. fmt.Println("排序后数组: ", arr)
    20. fmt.Println("--------------------------")
    21. }
    22. fmt.Printf("%v", arr)
    23. }
    24. func swap(arr []int, i int, j int) {
    25. tmp := arr[i]
    26. arr[i] = arr[j]
    27. arr[j] = tmp
    28. }

    打印结果:

    1. 排序数组: [6 4 2 3 1 5]
    2. 1 次排序,交换数组0 4 下标的位置.
    3. 排序后数组: [1 4 2 3 6 5]
    4. --------------------------
    5. 2 次排序,交换数组1 2 下标的位置.
    6. 排序后数组: [1 2 4 3 6 5]
    7. --------------------------
    8. 3 次排序,交换数组2 3 下标的位置.
    9. 排序后数组: [1 2 3 4 6 5]
    10. --------------------------
    11. 4 次排序,交换数组3 3 下标的位置.
    12. 排序后数组: [1 2 3 4 6 5]
    13. --------------------------
    14. 5 次排序,交换数组4 5 下标的位置.
    15. 排序后数组: [1 2 3 4 5 6]
    16. --------------------------
    17. [1 2 3 4 5 6]