排序算法专题-冒泡排序

  顾名思义,冒泡排序的原理就是最小(最大)的元素会在一次次迭代中逐渐浮现到数组的顶端,每一次的迭代都是相邻两个元素之间的比较.

  • 具体的算法步骤是:
  • 1:比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2:对每一对相邻元素作同样的比较和操作,一直到数组最后一个元素。第一轮迭代完成后,最后的元素会是最大的数。
    3:针对所有的元素重复以上的步骤,每一轮迭代需要的比较次数为n-k,k为已经迭代的次数,因为每迭代以此,就有一个元素确定了位置。

  • 举个栗子:
    原数组:3 38 5 44 15 36,数组元素为6个
    第一轮迭代:
    38和5、44和15、44和36交换位置:3 5 38 36 15 44
    第二轮迭代:最后一个位置不需要进行比较了。因此比较次数=n-k=6-1=5
    38和36、38和15交换位置:3 5 36 15 38 44
    以此类推

  • python代码实现如下:
def bubbelSort(nums):
    n = len(nums)
    for i in range(n-1):
        for j in range(n-1-i):
            if nums[j] > nums[j+1]:
                nums[j], nums[j+1] = nums[j+1], nums[j]
nums = [3, 38, 5, 44, 15, 36]
bubbelSort(nums)
print(nums)
  • 算法解析:冒泡排序算法每一次迭代确定一个较大(较小)的元素所在的位置,所以一共需要进行n-1次迭代,因为确定了n-1个位置之后,剩下的一个元素位置必然就确定了,因此代码中第一层循环次数为n-1次,当前已完成迭代次数为k,每一次迭代所需要比较的次数为没有确定位置的元素,即n-k-1,因此第二层循环对应的循环次数为n-i,该算法在原来数组上进行操作,没有产生额外的空间消耗,因此空间复杂度为O(1),该算法的运行次数为(1+2+3+…+n-1)=(n-1)*n/2,时间复杂度为O(n2)。
  • 该算法的迭代次数是固定的,不论数组是否有序,迭代次数不变,比较次数不变,该算法不会改变相等元素的相对次序,以此冒泡排序算法是稳定算法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lemon_tttea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值