← 返回学科目录
冒泡排序算法可视化
相邻比较 + 交换,像气泡一样上升
排序过程可视化
点击"播放"开始排序动画
0
比较次数
0
交换次数
0
已完成轮次
默认(未排序)
正在比较
正在交换
已排序
控制面板
▶ 播放
⏸ 暂停
⏭ 下一步
↺ 重置
动画速度
中速
数据设置
应用
🎲 随机生成数据
算法伪代码
function bubbleSort(arr) {
let n = arr.length;
for (let i = 0; i < n-1; i++) {
for (let j = 0; j < n-i-1; j++) {
// 比较相邻元素
if (arr[j] > arr[j+1]) {
// 交换元素
swap(arr[j], arr[j+1]);
}
}
// 第i轮结束,arr[n-i-1]已就位
}
}
冒泡排序算法说明
核心思想
:重复遍历要排序的数列,一次比较两个相邻元素,如果它们的顺序错误就把它们交换过来。
算法步骤
:
从第一个元素开始,比较相邻的两个元素。
如果第一个比第二个大(升序排序),就交换它们。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这样一轮结束后,最大的元素会"冒泡"到数列的末端。
针对所有的元素重复以上的步骤,除了已经排序好的元素。
重复步骤1~4,直到排序完成。
时间复杂度
:平均和最坏情况都是O(n²),最好情况(已排序)是O(n)。
空间复杂度
:O(1),是原地排序算法。
稳定性
:稳定排序算法,相等元素的相对位置不会改变。
观察提示
:注意观察每一轮结束后,最大的元素如何像"气泡"一样上升到正确位置,以及已排序区域如何逐渐扩大。