【数据结构】冒泡排序-python实现

【数据结构】冒泡排序-python实现

冒泡排序介绍

冒泡排序通过不断的将较大(较小)的元素进行交换排序(像气泡一样逐渐浮上来),使得原本无序的结果逐渐有序。由于排序时,待选元素会和所有的元素进行对比,所以算法整体是稳定的。

时间复杂度

从无序到最终有序,算法不存在最好或者最坏的情况 (无论结果如何,都会进行遍历)。算法时间复杂度为o(n2)

代码实现

def Bubble(arr = [], comp_func = lambda x, y: x > y):
    ''' generate big sequence
    '''
    # after every loop, arr[i] would be the biggest
    # of arr[0] - arr[i]
    # time complexy is o(n) 
    for i in range(len(arr)-1, 0, -1):
        # use comp_func to find the biggest
        for j in range(i-1):
            # time complexy is o(n) 
            if j > len(arr) or j < 0:
                continue
            if comp_func( arr[j], arr[j+1]):
                # swap
                print("swap %d - %d : %d %d" % (j, j+1, arr[j], arr[j+1]))
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

运行示例

    pre_arr = [0, 1, 2, 4, 1, 6, 2, 6, 9]
    print(Bubble(pre_arr))

在这里插入图片描述

参考推荐 https://www.cnblogs.com/eniac12/p/5329396.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值