乐趣区

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

抉择排序的一种 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]
退出移动版