python冒泡排序

冒泡排序思想

大家可以把我们所有的需要排列的数字想象成一个水中的气泡,大的数字想象成大气泡,小的数字想象成小气泡。

其实冒泡排序就是比较相邻的两个数字的大小,然后大的数字排在小的数字的后面,我们依次比较,第一轮比较完成,最大的数字一定是排在我们整个列表的最后面,然后最后的一个数字,就不用纳入我们比较的范畴里面了,经过几轮后,所以的数字都会成一个有序的形状了。

代码实现

复制代码
def bubble_sort(li):
    """
    此函数为冒泡排序的代码
    :param li:
    :return:
    """
    for i in range(len(li) - 1):  # 第i趟
        exchange=True  # 设置判断标志
        for j in range(len(li) - i - 1):
            if li[j] > li[j + 1]:
                li[j], li[j + 1] = li[j + 1], li[j]
                exchange=False
        if exchange:  # 判断如果没有进行排序,说明无序区的代码已经排序好了
            break

运行结果为

  • 第一个是4和2比较,4大于2,所以4和2交换位置。
  • 第二行4和2比较,4大于1,交换位置
  • 第三行4和5比较,4小于5,所以不用交换位置

大家能够在我的代码当中看到,我设置了exchange这个参数,这个参数的含义就是,在一轮的交换当中,只要交换了位置,我就将exchange这个参数令为False,在后方就不会跳出for循环,说明还有数据不是排序好的,只要我们在一轮交换数据中,有数据没有交换,我们就会终止for循环,这样大大的节约了我们的代码运行时间。

相关推荐
雾月5519 分钟前
LeetCode 914 卡牌分组
java·开发语言·算法·leetcode·职场和发展
想跑步的小弱鸡22 分钟前
Leetcode hot 100(day 4)
算法·leetcode·职场和发展
Fantasydg24 分钟前
DAY 35 leetcode 202--哈希表.快乐数
算法·leetcode·散列表
jyyyx的算法博客24 分钟前
Leetcode 2337 -- 双指针 | 脑筋急转弯
算法·leetcode
SweetCode36 分钟前
裴蜀定理:整数解的奥秘
数据结构·python·线性代数·算法·机器学习
ゞ 正在缓冲99%…1 小时前
leetcode76.最小覆盖子串
java·算法·leetcode·字符串·双指针·滑动窗口
xuanjiong1 小时前
纯个人整理,蓝桥杯使用的算法模板day2(0-1背包问题),手打个人理解注释,超全面,且均已验证成功(附带详细手写“模拟流程图”,全网首个
算法·蓝桥杯·动态规划
惊鸿.Jh1 小时前
【滑动窗口】3254. 长度为 K 的子数组的能量值 I
数据结构·算法·leetcode
明灯L1 小时前
《函数基础与内存机制深度剖析:从 return 语句到各类经典编程题详解》
经验分享·python·算法·链表·经典例题
碳基学AI1 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义免费下载方法
大数据·人工智能·python·gpt·算法·语言模型·集成学习