冒泡排序(简单而有效的排序方法)
发布日期:2022-02-12 16:07:04
浏览次数:1
分类:技术文章
本文共 876 字,大约阅读时间需要 2 分钟。
一、背景
加深自己对经典排序算法的理解,并且探索更多简化的写法和优化的表现。
二、算法介绍
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从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. 当冒泡进行一圈,都没有发生元素交换的时候,说明此时排序已经完成,无需后面的冒泡了。
转载地址:https://blog.csdn.net/wenq_yang/article/details/109091945 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月19日 13时56分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Leetcode刷题篇】leetcode4 寻找两个正序数组的中位数
2019-04-26
【Leetcode刷题篇】leetcode316 去除重复字母
2019-04-26
【Leetcode刷题篇】leetcode1081 不同字符的最小子序列
2019-04-26
【面试篇】Java网络编程与IO流体系
2019-04-26
【大话Mysql面试】-Mysql的索引为什么要使用B+树,而不是B树,红黑树等之类?
2019-04-26
【大话Mysql面试】-如何通俗易懂的了解Mysql的索引最左前缀匹配原则
2019-04-26
【大话Mysql面试】-MYSQL的两种存储引擎MyISAM与InnoDB的区别是什么?
2019-04-26
理解String.intern()和String类常量池疑难解析例子
2019-04-26
06 Python之函数调用与定义
2019-04-26
07 Python之Numpy库
2019-04-26
08 Python之Pandas库选择查看、选择
2019-04-26
如何在junit中使用SpringFramework的Ioc容器
2019-04-26
一个案例教你理解Spring面向切面编程(Spring Aop)
2019-04-26
手把手教你整合SSM框架
2019-04-26
自己造个简单数据校验的注解@Value和@Mail
2019-04-26
Poj百练 4148:生理周期 (分类:枚举)
2019-04-26
微信公众号介绍_以及注册订阅号---微信公众号开发工作笔记0001
2019-04-26
Vue模板语法---vue工作笔记0003
2019-04-26