golang 实现选择排序算法

算法思想

选择排序提高了冒泡排序的性能,它每遍历一次列表只交换一次数据,即进行一次遍历时找 到最大的项,完成遍历后,再把它换到正确的位置。和冒泡排序一样,第一次遍历后,最大的数 据项就已归位,第二次遍历使次大项归位。这个过程持续进行,一共需要 n-1 次遍历来排好 n 个数 据,因为最后一个数据必须在第 n-1 次遍历之后才能归位。


golang 实现选择排序算法_第1张图片
v2-1c7e20f306ddc02eb4e3a50fa7817ff4_b.gif
func SelectionSort(arr []int) {
    n := len(arr)
    for i := 0; i < n; i++ {
        // 里面循环找到最小元素的坐标
        minIndex := i
        // 前面排序好的,不用管,所以从i+1开始
        for j := i + 1; j < n; j++ {
            // 如果比第一个坐标小,就换位置
            if arr[j] < arr[minIndex] {
                minIndex = j
            }

        }
        // 交换数据
        arr[i], arr[minIndex] = arr[minIndex], arr[i]
    }
    fmt.Println(arr) // [1 2 3 4 5]

}

func main() {
    SelectionSort([]int{5, 2, 3, 1, 4})
}

你可能感兴趣的:(golang 实现选择排序算法)