阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Go语言数据结构之选择排序示例

282次阅读
没有评论

共计 1012 个字符,预计需要花费 3 分钟才能阅读完成。

导读 这篇文章主要为大家介绍了 Go 语言数据结构之选择排序示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
选择排序

选择排序(selection sort)是一种原地(in-place) 排序算法,适用于数据量较少的情况。由于选择操作是基于键值的且交换操作只在需要时才执行,所以选择排序长用于数值较大和键值较小的文件。

思想:

对一个数组进行排序,从未排序的部分反复找到最小的元素,并将其放在开头。

给定长度为 nnn 的序列和位置索引 i =0 的数组,选择排序将:

  • 遍历一遍序列,寻找序列中的最小值。在 [i…n−1] 范围内找出最小值 minValue 的位置 minIndex,
  • 用当前位置的值交换最小值。第 i 项的值与交换 minIndex 的值交换,swap(nums[i],nums[minIndex])
  • 对所有元素重复上述过程,直到整个序列排序完成。将下限 iii 增加 1,并重复步骤 1 直到 i=n−2。
  • 伪代码:

    func selectionSort(nums []int, length int) {
      for i := 0; i 
    
    动画演示

    Go 语言数据结构之选择排序示例

    Go 代码实现
    package main
    import "fmt"
    func main() {unsorted := []int{40, 13, 20, 8, 12, 10, 27}
      length := len(unsorted)
      selectionSort(unsorted, length)
      for i := 0; i  nums[j+1] {minValue = nums[j+1]
            minIdx = j + 1
          }
        }
        // 如果最小值的位置改变,将当前的最小值位置保存
        if i != minIdx {var temp = nums[i]
          nums[i] = nums[minIdx]
          nums[minIdx] = temp
        }
      }
    }

    运行结果为:

    [Running] go run "e:\Coding Workspaces\LearningGoTheEasiestWay\Go 数据结构 \ 选择排序 \main.go"\
    8 10 12 13 20 27 40
    总结

    Go 语言数据结构之选择排序示例

    选择排序的优点:

  • 易于实现,容易理解
  • 原地排序(不需要额外的存储空间), 即 空间复杂度为 O(1)O(1)O(1)
  • 缺点:

  • 扩展性较差
  • 时间复杂度为 O(n2)O(n^2)O(n2)
  • 稳定性:

  • 选择排序是不稳定的排序算法。
  • 以上就是 Go 语言数据结构之选择排序示例详解的详细内容

    阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

    腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

    代金券:在阿里云专用满减优惠券

    正文完
    星哥玩云-微信公众号
    post-qrcode
     0
    星锅
    版权声明:本站原创文章,由 星锅 于2024-07-26发表,共计1012字。
    转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
    阿里云-最新活动爆款每日限量供应
    评论(没有评论)
    验证码
    【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

    星哥玩云

    星哥玩云
    星哥玩云
    分享互联网知识
    用户数
    4
    文章数
    19348
    评论数
    4
    阅读量
    7806661
    文章搜索
    热门文章
    开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

    开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

    开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
    星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

    星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

    星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
    云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

    云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

    云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
    我把用了20年的360安全卫士卸载了

    我把用了20年的360安全卫士卸载了

    我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
    星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

    星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

    星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
    阿里云CDN
    阿里云CDN-提高用户访问的响应速度和成功率
    随机文章
    星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

    星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

    星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
    颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

    颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

      颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
    星哥带你玩飞牛NAS-1:安装飞牛NAS

    星哥带你玩飞牛NAS-1:安装飞牛NAS

    星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
    零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

    零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

    零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
    Prometheus:监控系统的部署与指标收集

    Prometheus:监控系统的部署与指标收集

    Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...

    免费图片视频管理工具让灵感库告别混乱

    一言一句话
    -「
    手气不错
    手把手教你,购买云服务器并且安装宝塔面板

    手把手教你,购买云服务器并且安装宝塔面板

    手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
    浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

    浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

    浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
    星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

    星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

      星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
    多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

    多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

    多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
    Prometheus:监控系统的部署与指标收集

    Prometheus:监控系统的部署与指标收集

    Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...