冒泡排序的原理

冒泡排序是一种简单的排序算法,它通过重复地遍历待排序的列表,比较相邻的元素并交换它们的位置来实现排序。具体原理如下:

冒泡排序的基本思想

冒泡排序的核心思想是通过相邻元素的比较和交换,将较大的元素逐步"冒泡"到列表的末尾。每一轮遍历都会确定一个最大元素的位置,经过多轮遍历后,整个列表就会变得有序。

冒泡排序的步骤

  1. 从列表的第一个元素开始,依次比较相邻的两个元素。
  2. 如果前一个元素大于后一个元素,则交换它们的位置。
  3. 继续遍历列表,直到最后一个元素。
  4. 重复上述过程,每次遍历都会减少一个需要比较的元素,因为每次遍历后,最大的元素已经"冒泡"到正确的位置。
  5. 当没有元素需要交换时,排序完成。

冒泡排序的代码示例

python 复制代码
def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        # 标记是否发生交换
        swapped = False
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                # 交换元素
                arr[j], arr[j+1] = arr[j+1], arr[j]
                swapped = True
        # 如果没有发生交换,说明列表已经有序,提前退出
        if not swapped:
            break
    return arr

# 示例
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)

冒泡排序的时间复杂度

冒泡排序的时间复杂度为 O(n^2),其中 n 是列表的长度。在最坏的情况下,需要进行 n*(n-1)/2 次比较和交换。尽管冒泡排序的效率较低,但由于其实现简单,常被用于教学或小规模数据的排序。

相关推荐
计算机魔术师11 分钟前
OpenAI 首个踩红线的 AI 模型来了:能自己挖漏洞,但只给少数人用
前端
闲坐含香咀翠12 分钟前
从 132MB 到 25MB:列式存储怎么把 CPU 缓存命中率提上去的
前端·数据结构·性能优化
闲坐含香咀翠22 分钟前
把 AntV S2 列头计算从 O(n²) 降到 O(n):一次开源组件的性能改造
前端·性能优化
闲坐含香咀翠27 分钟前
Worker 常驻 + 零拷贝:postMessage 的结构化克隆算法与 Transferable 的真实代价
前端·性能优化
JunjunZ39 分钟前
Naive UI 虚拟级联选择器适配 Element Plus 风格
前端·javascript·vue.js
ynchyong1 小时前
微信小程序启动顺序遇到的一个坑
前端·微信小程序
用户233376852181 小时前
接口卡死排查实录-缺失return的UB死循环
前端·后端
光影少年2 小时前
如何实现RN 多环境、多渠道打包
前端·react native·react.js
闲坐含香咀翠2 小时前
百万行数据透视表,我是怎么把 Vue 响应式开销砍到零的
前端·vue.js·性能优化