排序算法-冒泡排序

思想

重复的遍历排列的序列,一次比较两个元素,如果他们顺序是错误的,就将他们反过来。

详细步骤

  1. 比较相邻的元素:在列表的最左侧开始,也就是第一个元素的位置,然后比较位置上的第一个和第二个元素。
  2. 交换操作:如果第一个元素大于第二个元素,他们会交换位置。如果第一个元素小于或等于第二个元素,则位置保持不变。
  3. 移动到下一对元素:接下来,算法将移至第二个和第三个元素的位置上,重复上述的比较和交换操作。
  4. 遍历整个列表:该过程会一直继续,直到整个列表全都遍历完一次。此时,列表中最大的元素会被"冒泡"到列表的最右侧。
  5. 重复以上步骤:然后,算法会再次从列表的第一个元素开始,并重复整个过程。唯一的区别是,每完成一次整个列表的遍历后,算法对最大元素的搜索就会减少一个。

详细代码

python 复制代码
def bubble_sort(nums):
    # 外层循环控制需要遍历的次数,每次遍历都会将最大的元素"冒泡"到正确的位置
    # i指的是次数,取值为 7, 6, 5, 4, 3, 2, 1
    for i in range(len(nums)-1, 0, -1):
        # 内层循环负责比较相邻元素并交换位置
        for j in range(i):
            # j指的是索引:0123456
            if nums[j] > nums[j+1]:
                nums[j], nums[j+1] = nums[j+1], nums[j]
    return nums
相关推荐
大志若愚YYZ3 分钟前
ROS2学习 C++中的this指针
c++·学习·算法
AI科技星6 分钟前
光子的几何起源与量子本质:一个源于时空本底运动的统一模型
服务器·人工智能·线性代数·算法·机器学习
源代码•宸6 分钟前
Golang原理剖析(map面试与分析)
开发语言·后端·算法·面试·职场和发展·golang·map
CodeByV8 分钟前
【算法题】栈
算法
sprintzer31 分钟前
1.6-1.15力扣数学刷题
算法·leetcode·职场和发展
jiang_bluetooth32 分钟前
channel sounding基于探测序列的时延和相位差算法
算法·蓝牙测距·channel sound·gfsk·蓝牙6.0
地平线开发者1 小时前
征程 6 算法工具链 | PTQ 深度使用指南
算法·自动驾驶
Xの哲學1 小时前
Linux 软中断深度剖析: 从设计思想到实战调试
linux·网络·算法·架构·边缘计算
暴风游侠1 小时前
如何进行科学的分类
笔记·算法·分类
leaves falling2 小时前
冒泡排序(基础版+通用版)
数据结构·算法·排序算法