冒泡排序的原理

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

冒泡排序的基本思想

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

冒泡排序的步骤

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

相关推荐
XPoet1 分钟前
AI 编程工程化:MCP——给你的 AI 员工打通外部能力
前端·后端·ai编程
笨笨狗吞噬者17 分钟前
小程序包体积分析利器 -- vite-plugin-component-insight
前端·微信小程序·uni-app
吴声子夜歌18 分钟前
Vue3——v-for指令
前端·javascript·vue
你的牧游哥23 分钟前
Cursor IDE Rules / Skills / Subagents 前端项目配置全指南
前端·ide
音仔小瓜皮25 分钟前
【Vue】什么时候用Ref?什么时候用shallowRef?
前端·javascript·vue.js
码喽7号27 分钟前
vue学习五:前端路由VueRouter
前端·vue.js·学习
史迪仔011229 分钟前
[QML] 交互事件深度解析:鼠标、键盘、拖拽
前端·c++·qt
ZC跨境爬虫33 分钟前
海南大学交友平台开发实战 day11(实现性别图标渲染与后端数据关联+Debug复盘)
前端·python·sqlite·html·json
GISer_Jing35 分钟前
前端JS面试6大核心考点详解
前端·javascript·面试
ai大模型中转api测评37 分钟前
2026年前端新工具:Gemini 3.1 SVG工作流从Prompt到部署
前端·人工智能·prompt·api