Go语言数据结构之插入排序示例详解

 更新时间:2022年08月26日 15:11:42   作者:宇宙之一粟  
这篇文章主要为大家介绍了Go语言数据结构之插入排序示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

插入排序

插入排序,英文名(insertion sort)是一种简单且有效的比较排序算法。

思想: 在每次迭代过程中算法随机地从输入序列中移除一个元素,并将改元素插入待排序序列的正确位置。重复该过程,直到所有输入元素都被选择一次,排序结束。

插入排序有点像小时候我们抓扑克牌的方式,如果抓起一张牌,我们放在手里;抓起第二张的时候,会跟手里的第一张牌进行比较,比手里的第一张牌小放在左边,否则,放在右边。

因此,对所有的牌重复这样的操作,所以每一次都是插入最正确的排序顺序,直到牌抓完为止。

动画演示

假设我们需要从小到大进行排序,动画演示如下:

Go 代码实现

package main
import "fmt"
func main() {
    arrays := []int{6, 2, 5, 8, 9, 3, 1}
    length := len(arrays)
    insertionSort(arrays, length)
    for i := 0; i < length; i++ {
        fmt.Printf("%d ", arrays[i])
    }
}
func insertionSort(unsorted []int, length int) {
    for i := 0; i < length; i++ {
        var insertElement = unsorted[i]
        var insertPosition = i
        for j := insertPosition - 1; j >= 0; j-- {
            if insertElement < unsorted[j] {
                unsorted[j+1] = unsorted[j]
                insertPosition--
            }
        }
        unsorted[insertPosition] = insertElement
    }
}

运行结果:

[Running] go run "e:\Coding Workspaces\LearningGoTheEasiestWay\Go 数据结构\main.go"
1 2 3 5 6 8 9

总结

插入排序实现简单,理解也较容易,数据量较少时效率高,算法的实际运行效率优于选择排序和冒泡排序。

空间复杂度: 空间复杂度为 O(1),即不输入借助其他的辅助空间。

稳定性: 插入排序是稳定的排序算法,在键值相同时它能够保持输入数据的原有次序。

以上就是Go语言数据结构之插入排序示例详解的详细内容,更多关于Go 数据结构插入排序的资料请关注脚本之家其它相关文章!

相关文章

  • golang metrics各个指标含义讲解说明

    golang metrics各个指标含义讲解说明

    这篇文章主要为大家介绍了golang metrics各个指标含义讲解说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Go modules replace解决Go依赖引用问题

    Go modules replace解决Go依赖引用问题

    这篇文章主要为大家介绍了Go modules replace解决Go依赖引用问题,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 基于golang中container/list包的用法说明

    基于golang中container/list包的用法说明

    这篇文章主要介绍了基于golang中container/list包的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • go项目实现mysql接入及web api的操作方法

    go项目实现mysql接入及web api的操作方法

    这篇文章主要介绍了go项目实现mysql接入以及web api,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 利用go语言编写一个并发包

    利用go语言编写一个并发包

    这篇文章主要为大家详细介绍了如何利用go语言编写一个并发包,适合大部分并发任务,开箱即用,文中的示例代码讲解详细,有需要的小伙伴可以参考下
    2023-10-10
  • GO语言的控制语句详解包括GO语言的指针语法

    GO语言的控制语句详解包括GO语言的指针语法

    这篇文章主要介绍了GO语言的控制语句详解包括GO语言的指针语法,GO语言switch结构,GO语言for的4种结构需要的朋友可以参考下
    2022-12-12
  • 使用Go语言开发自动化API测试工具详解

    使用Go语言开发自动化API测试工具详解

    这篇文章主要为大家详细介绍了如何使用Go语言开发自动化API测试工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考下
    2024-03-03
  • 我为什么喜欢Go语言(简洁的Go语言)

    我为什么喜欢Go语言(简洁的Go语言)

    从2000年至今,也写了11年代码了,期间用过VB、Delphi、C#、C++、Ruby、Python,一直在寻找一门符合自己心意和理念的语言。我很在意写代码时的手感和执行的效率,所以在Go出现之前一直没有找到
    2014-10-10
  • golang struct, map, json之间的相互转换

    golang struct, map, json之间的相互转换

    本文用于记录我在 golang 学习阶段遇到的类型转换问题,针对的是 json 、map、struct 之间相互转换的问题,感兴趣的可以了解一下
    2021-06-06
  • 基于go手动写个转发代理服务的代码实现

    基于go手动写个转发代理服务的代码实现

    这篇文章主要介绍了基于go手动写个转发代理服务的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02

最新评论