Go-选择排序

import "fmt"

//       1 9 2 8  7 6  4  5
//9        1  2 8  7 6  4  5
//9   8       1  2   7 6  4  5
//9   8    7       1  2    6  4  5

func SelectSortMax(arr []int) int {
    length := len(arr) //数组长度
    if length <= 1 {
        return arr[0] //一个元素的数组,直接返回
    } else {
        max := arr[0] //假定第一个最大
        for i := 1; i < length; i++ {
            if arr[i] > max { //任何一个比我的大的数,最大的
                max = arr[i]
            }
        }
        return max
    }

}

func SelectSort(arr []int) []int {
    length := len(arr) //数组长度
    if length <= 1 {
        return arr //一个元素的数组,直接返回
    } else {
        for i := 0; i < length-1; i++ { //只剩一个元素不需要挑选,
            min := i                          //标记索引
            for j := i + 1; j < length; j++ { //每次选出一个极小值
                if arr[min] > arr[j] {
                    min = j //保存极小值的索引
                }
            }
            if i != min {
                arr[i], arr[min] = arr[min], arr[i] //数据交换
            }
            fmt.Println(arr)

        }

        return arr

    }

}

func main() {
    arr := []int{1, 9, 2, 8, 3, 7, 4, 6, 5, 10}
    //fmt.Println(SelectSortMax(arr))
    fmt.Println(SelectSort(arr))

}

 

posted @ 2022-12-15 12:05  爱跑步的乌龟  阅读(3)  评论(0编辑  收藏  举报