关于数据结构和算法:数据结构选择排序

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理