排序算法学习之冒泡排序

冒泡排序

冒泡排序算法,是经典的排序算法之一,是一种稳定的排序算法。

算法的时间复杂度n*n,最优情况下,复杂度为 n。

算法稳定性:在待排序的序列中,如果存在相同的数值,在排序前后,相同数值之间的相对位置(定性)不发生改变,则为稳定算法,否则就是非稳定算法。

冒泡算法的执行过程,以升序排列为例:

1、从序列一端的起始位置开始,依次比较当前位置与下一相邻位置的数值大小,如果当前位置数值大于下一相邻数,则交换二者位置,然后比较第二与第三位,第三与第四位。。。直到比较最后第二与末尾的数并根据需要交换位置,则最后一位为最大值;

2、从第一位开始按照第一步的方式,执行比较和交换,直到序列的最后第三与最后第二位的比较和交换完成,此时末二位为序列第二大的数;

3、从上过程可知,每执行完成一轮,则待比较的序列成员都会减少一个,直到只需要比较序列第一位和第二位时,完成最终的排序。

在这里插入图片描述

算法实现

冒泡排序的实现方法有多种,这里给出两种 容易理解的实现方法。

第一种实现方法:

def bubble1(lst):
    n=len(lst)
    for i in range(n-1):
        for j in range(n-1-i):
            if lst[j] > lst[j+1]:
                lst[j+1], lst[j] = lst[j], lst[j+1]

第二种实现方法:

def bubble2(lst):
    n=len(lst)
    for i in range(n-1,0,-1):
        for j in range(i):
            if lst[j] > lst[j+1]:
                lst[j+1], lst[j] = lst[j], lst[j+1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值