golang 实现选择排序算法

啃骨头的小狗 · · 572 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

算法思想

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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

572 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传