您的位置 首页 编程知识

python如何进行冒泡排序

冒泡排序是通过重复遍历列表、比较相邻元素并交换使较大(或较小)元素逐步“冒泡”至一端的排序算法;Python实…


冒泡排序是通过重复遍历列表、比较相邻元素并交换使较大(或较小)元素逐步“冒泡”至一端的排序算法;Python实现中,外层控制轮数,内层两两比较交换,可用flag优化提前终止。

python如何进行冒泡排序

是一种基础的,原理简单:重复遍历列表,比较相邻元素,把较大的(或较小的)逐个“冒泡”到一端。Python 实现起来很直观,适合理解排序逻辑。

基本实现(升序)

核心思路:每轮遍历把当前未排序部分的最大值移到末尾。

说明:外层循环控制轮数(最多 n-1 轮),内层循环负责两两比较和交换;每轮结束后,末尾元素就已就位,所以下一轮范围可缩小。

建议写法:

立即学习“”;

全中文AIGC创作平台和AI社区

python如何进行冒泡排序 266

  • len(arr) – 1 – i 控制内层边界,避免重复比较已排好的末尾元素
  • 加入 flag 优化:若某轮没发生交换,说明已有序,可提前退出

示例代码:

def bubble_sort(arr):     n = len(arr)     for i in range(n):         swapped = False  # 标记本轮是否发生交换         for j in range(0, n - 1 - i):             if arr[j] > arr[j + 1]:                 arr[j], arr[j + 1] = arr[j + 1], arr[j]                 swapped = True         if not swapped:             break     return arr <h1>测试</h1><p>nums = [64, 34, 25, 12, 22, 11, 90] print(bubble_sort(nums))  # [11, 12, 22, 25, 34, 64, 90] 
登录后复制

降序只需改一个符号

把内层判断条件 arr[j] > arr[j + 1] 改成 arr[j] 即可,其余逻辑完全不变。

注意:原地排序 vs 返回新列表

上面的实现是原地修改输入列表。如果想保留原列表不变,可以先复制一份:

  • arr.copy()arr[:] 创建副本再排序
  • 不推荐直接返回 sorted(arr)——那用的是Timsort,不是冒泡

基本上就这些。冒泡排序时间复杂度是 O(n²),不适合量,但写起来快、逻辑清晰,是入门必练算法之一。

以上就是如何进行的详细内容,更多请关注php中文网其它相关文章!

相关标签:

大家都在看:

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/17148.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部