跟着动画学Go数据结构之插入排序 #私藏项目实操分享#

Posted 宇宙之一粟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟着动画学Go数据结构之插入排序 #私藏项目实操分享#相关的知识,希望对你有一定的参考价值。

插入排序

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

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

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

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

跟着动画学Go数据结构之插入排序

假设我们需要从小到大进行排序:

跟着动画学Go数据结构之插入排序

Go 代码实现

package main

import "fmt"

func main()
arrays := []int6, 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

总结

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

算法的最坏时间复杂度为跟着动画学Go数据结构之插入排序,如果输入的序列已经预排序,则时间复杂度最优情况 跟着动画学Go数据结构之插入排序d 是反转的次数。

空间复杂度为 跟着动画学Go数据结构之插入排序,即不输入借助其他的辅助空间。

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

文章中使用的可视化工具:​​https://visualgo.net/zh​

以上是关于跟着动画学Go数据结构之插入排序 #私藏项目实操分享#的主要内容,如果未能解决你的问题,请参考以下文章

跟着动画学Go数据结构之冒泡排序 #私藏项目实操分享#

跟着动画学 Go 数据结构之 Go 实现栈#私藏项目实操分享#

跟着动画学 Go 数据结构之 Go 实现栈#私藏项目实操分享#

Go 软件设计之道:1 对不同类型的数据进行分组 #私藏项目实操分享#

#私藏项目实操分享#愚公系列2022年05月 Python教学课程 75-DRF框架之排序

Go 语言入门很简单 -- Go 语言转化为 JSON #私藏项目实操分享#