直接插入排序比较次数_算法排序----插入排序法

这篇博客详细介绍了直接插入排序的原理和过程。在直接插入排序中,每个元素都要与已排序的序列进行比较并找到合适的位置,导致其时间复杂度为O(n²)。博主通过例子展示了如何进行排序,并指出这种算法是稳定的。直接插入排序在最好情况(序列已排序)下的时间复杂度为O(n),平均情况为O(n²)。
摘要由CSDN通过智能技术生成

接下来我来讲述一下插入排序法。

首先来解释一下插入排序法的原理,它的原理是每插入一个数都要将它和之前的已经完成排序的序列进行重新排序,也就是要找到新插入的数对应原序列中的位置。那么也就是说,每次插入一个数都要对原来排序好的那部分序列进行重新的排序,时间复杂度同样为O(n²)。 这种算法是稳定的排序方法。

直接插入排序算法分析

根据代码我们来解释一下直接插入排序的核心

例如,我们要对5,3,4,6,2这几个数进行排序

96cc807fdac719bf2d3d5eda211091b1.png

当这个数组进入函数后,下标首先定义到i = 1,即排序前,首先定义为a[0] = 5即是有序的。

进入循环内,比较a[1] 是否小于 a[0] 发现是小于的,这个时候按理说是要把a[0]这个元素右移动1位。然后将a[1]这个元素插在a[0]的位置上

但是考虑到这样子将覆盖原来的a[1]的值,所以先将a[1]的值拷贝一份给temp,然后将a[0]右移一位,再将temp的值传给a[0] .即

eadd50765513f446b0fc42edceec7bf0.png

这时i =2了。此时a[0],a[1]属于有序的序列了,我们此时再次比较a

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值