排序算法:直接插入排序

排序算法:直接插入排序

游戏|数码彩彩2024-04-03 7:46:34269A+A-

算法原理:

将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)

排序算法:直接插入排序

 

算法实现(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)

点击这里复制本文地址 版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(https://www.angyang.net.cn)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

昂扬百科 © All Rights Reserved.  渝ICP备2023000803号-3网赚杂谈