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

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

35次阅读
没有评论

共计 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、短信等云产品特惠热卖中