选择排序的一种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]

Yuan_sr
18 声望6 粉丝