案头见蠹鱼,犹胜凡俦侣。这篇文章主要讲述跟着动画学Go数据结构之插入排序 #私藏项目实操分享#相关的知识,希望能为你提供帮助。
插入排序插入排序,英文名(insertion
sort)是一种简单且有效的比较排序算法。
【跟着动画学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
总结
插入排序实现简单,理解也较容易,数据量较少时效率高,算法的实际运行效率优于选择排序和冒泡排序。
算法的最坏时间复杂度为
空间复杂度为
插入排序是稳定的排序算法,在键值相同时它能够保持输入数据的原有次序。
文章中使用的可视化工具:??https://visualgo.net/zh??
推荐阅读
- 从一次Windows网络编程排错经历中得出的一个可靠拆包算法
- EasyCVR启动失败并报错LibEasySnap.dll(The specified module could not be found)
- 滑动冲突问题,触摸事件拦截处理
- #yyds干货盘点#-设计模式分享-组合模式
- 重要的ui组件——Behavior
- gitlab 搭建go modules私有仓库
- Django+uwsgi在linux和windows上的部署
- Android 控件架构与自定义控件详解
- Android使用 SO 库时要注意的一些问题