网站首页 > 精选教程 正文
算法原理:
将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)
算法实现(go语言):
func insertSort(input []int) []int{
length := len(input)
if length <= 0 {
return input
}
for i:= 1 ;i < length; i++{
tmp := input[i]
var j int
for j= i-1; j >= 0 ; j-- {
//因为是有序的,比tmp小,所以tmp要直接放在最后
if input[j] <= tmp {
break
}
//tmp大,在tmp后的都要后移一位
if input[j] > tmp {
input[j+1] = input[j]
}
}
input[j + 1] = tmp
}
return input
}
复杂度
时间复杂度: 两层循环,外层循环n-1次。第2层循环次数依赖于在第i个记录前的元素中小于第i个记录元素的个数。
最差情况:每个元素都要移动到最前面(逆序的情况),时间复杂度为O(n^2)
最好情况:第2层循环直接break(已经正序的情况),时间复杂度为O(n)
空间复杂度:没有利用新的数组来帮助完成排序算法,所以空间复杂度为O(1)
猜你喜欢
- 2024-11-17 基础算法之「插入排序」(c语言排序算法直接插入法)
- 2024-11-17 程序猿小白进阶之路,一天学习一个算法:插入排序
- 2024-11-17 常用排序算法之插入排序(常用排序算法之插入排序规则)
- 2024-11-17 看动图学算法(三):插入排序算法原理和Java讲解
- 2024-11-17 Java程序员面试时写不出排序算法?看这篇就够了
- 2024-11-17 Python 实现经典算法之插入排序(用python排序算法)
- 2024-11-17 掌握算法-排序-插入排序(掌握算法-排序-插入排序规则)
- 2024-11-17 排序之插入排序(直接插入排序算法)
- 2024-11-17 一文掌握Python 中的排序算法——插入排序
- 2024-11-17 在 Python 中实现插入排序(Insertion Sorting)
本文暂时没有评论,来添加一个吧(●'◡'●)