为了账号安全,请及时绑定邮箱和手机立即绑定

[golang] 数据结构-直接插入排序

标签:
Go


原理

直接插入排序,也是一种非常简单的排序算法。

第一轮先从第二个元素开始,和第一个比较,如果较小就交换位置,本轮结束。第二轮从第三个元素开始,先与第二个比较,如果较小就与第二个交换,交换后再于第一个比较。如此循环直至最后一个元素完成比较逻辑。

复杂度

最好的情况下,直接插入排序只需进行n-1次比较,0次的交换。平均下来时间复杂度为 O(n^2)。

由于是每个元素逐个与有序的队列进行比较,所以不会出现相同数值的元素在排序完成后交换位置。所以直接插入排序是种稳定的排序算法。

代码

package main

import (

    "fmt"

    "math/rand"

)

func main() {

    var length = 10

    var tree []int

    for i := 0; i < length; i++ {

        tree = append(tree, int(rand.Intn(1000)))

    }

    fmt.Println(tree)

    for i := 1; i < length; i++ {

        for j := i; j > 0 && tree[j] < tree[j-1]; j-- {

            tree[j], tree[j-1] = tree[j-1], tree[j]

        }

        fmt.Println(tree)

    }

}

运行结果

[golang] 数据结构-直接插入排序

©著作权归作者所有:来自51CTO博客作者NicoChen的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消