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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[golang] 数据结构-直接插入排序相关的知识,希望对你有一定的参考价值。

原理
直接插入排序,也是一种非常简单的排序算法。
第一轮先从第二个元素开始,和第一个比较,如果较小就交换位置,本轮结束。第二轮从第三个元素开始,先与第二个比较,如果较小就与第二个交换,交换后再于第一个比较。如此循环直至最后一个元素完成比较逻辑。

复杂度
最好的情况下,直接插入排序只需进行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] 数据结构-直接插入排序的主要内容,如果未能解决你的问题,请参考以下文章

排序02-直接插入排序法

[golang] 数据结构-希尔排序

手撸golang 基本数据结构与算法 插入排序

golang数据结构之插入排序

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

golang插入排序算法