冒泡排序(简单而有效的排序方法)

一、背景

加深自己对经典排序算法的理解,并且探索更多简化的写法和优化的表现。

 

二、算法介绍

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

 

三、经典代码实现:

def bubble_sort_excue(random_list: list) -> list:
    """
    冒泡排序 按照从小到大依次排列 每次对比相邻的两个数 判断是否需要交换位置
    :param random_list: 乱序列表
    :return: 顺序列表
    """
    lenght = len(random_list)
    if lenght <= 1:
        return random_list
    for i in range(lenght-1):
        need_sort = False
        for j in range(lenght-i-1):
            if random_list[j] > random_list[j+1]:
                random_list[j], random_list[j+1] = random_list[j+1], random_list[j]
                need_sort = True
        if not need_sort:
            return random_list
    return random_list

 

四、优化思考

1. 当传入的list是1个元素或者是空list的时候,是不需要排序的。

2. 当冒泡进行一圈,都没有发生元素交换的时候,说明此时排序已经完成,无需后面的冒泡了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值