1.2 选择排序

未匹配的标注

努力学习算法 Let's go

概念

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

动图演示

select

执行代码

package main

import (
    "fmt"
)

func selectionSort(arr []int) []int {
    length := len(arr)//切片长度
    for i := 0; i < length-1; i++ { //循环次数 总元素个数
        min := i  // 0
        for j := i + 1; j < length; j++ { //循环次数 总元素个数减一
            if arr[min] > arr[j] { //如果默认最小数大于旁边第二数
                min = j
            }
        }
        //交换位置 依次选出最小值存入arr[0] arr[1]...
        arr[i], arr[min] = arr[min], arr[i] 
    }
    return arr
}

func main() {
    arr := []int{99,1,5,7,9,23,4,78,88,66,54,10,12}
    selectionSort := selectionSort(arr)
    fmt.Println("selectionSort:",selectionSort)
}

执行结果

selectionSort: [1 4 5 7 9 10 12 23 54 66 78 88 99]

参考LeetCode《代码随想录》及网上资料,code已测试,有问题可评论。保持好的状态,坚持学习,滴水穿石!

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
zhaocrazy
讨论数量: 0
发起讨论 只看当前版本


暂无话题~