冒 泡 排 序 是 一 种 简 单 的 排 序 算 法 , 其 工 作 原 理 是 通 过 多 次 遍 历 数 组 , 依 次
比 较 相 邻 元 素 的 大 小 ,将 较 大( 或 较 小 )的 元 素 逐 步“ 冒 泡 ”到 数 组 的 一 端 。
具 体 而 言 , 每 一 轮 遍 历 都 会 将 未 排 序 部 分 中 的 最 大 ( 或 最 小 ) 元 素 移 动 到
数 组 的 末 尾 ( 或 开 头 ) , 直 到 整 个 数 组 有 序 。 冒 泡 排 序 的 时 间 复 杂 度 为
(O(n^2)), 因 为 它 在 最 坏 情 况 下 需 要 进 行 ((n-1) + (n-2) + \ldots + 1 =
\frac{n(n-1)}{2}) 次 比 较 和 交 换 操 作 。
冒泡排序的步骤:
. 1. 从数组的第一个元素开始,依次比较相邻的两个元素。
.
2. 如果前一个元素比后一个元素大,则交换这两个元素,使较大的元素“冒泡”到
后面。
. 3. 每一轮遍历结束后,最大的元素会被移动到数组的末尾。
.
4. 重复上述过程,缩小未排序的部分,直到数组有序。
例子
给 定 一 个 数 组 [5, 3, 8, 6, 2] , 使 用 冒 泡 排 序 对 其 进 行 排 序 , 步 骤 如 下 :
.
1. 第 1 轮遍历:[5, 3, 8, 6, 2] → [3, 5, 8, 6, 2] → [3, 5, 6, 8, 2] → [3, 5, 6, 2, 8]
(最大元素 8 冒泡到最后)
. 2. 第 2 轮遍历:[3, 5, 6, 2, 8] → [3, 5, 6, 2, 8] → [3, 5, 2, 6, 8] → [3, 2, 5, 6, 8]
(次大元素 6 到倒数第二位)