冒泡排序的原理

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

冒泡排序的基本思想

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

冒泡排序的步骤

  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 次比较和交换。尽管冒泡排序的效率较低,但由于其实现简单,常被用于教学或小规模数据的排序。

相关推荐
kyriewen2 小时前
我扒了 GPT-5.6 的全部编程跑分——有一项 OpenAI 没敢放出来
前端·gpt·ai编程
前端H3 小时前
微前端 v3 架构升级:从加载隔离到状态协同
前端·架构·状态模式
陆枫Larry4 小时前
小程序包体积优化:用 SVG 图片替换 iconfont,并保留 CSS 控色能力
前端
环境栈笔记5 小时前
多账号浏览器选型检查清单:Profile、权限、Session 和任务日志怎么评估
前端·人工智能·后端·自动化
前端炒粉5 小时前
手写promise
java·前端·javascript
LaughingZhu5 小时前
智能体经典范式构建:ReAct、Plan-and-Solve 与 Reflection
前端·react.js·前端框架
jsonbro5 小时前
手把手带你实现发布订阅模式
前端·vue.js·设计模式
一只猫的梦5 小时前
自动化模块 (Automation Module)
前端·chrome
熊猫钓鱼>_>6 小时前
Electron:当 Web 技术统治桌面
大数据·前端·javascript·人工智能·架构·electron·agent
德福危险6 小时前
从盲打xss到到模板注入:unix靶机渗透之Tempus_fugit4
前端·unix·xss