5
30
慢
快
冒泡排序 可视化
算法信息
时间复杂度
O(n²) - 最坏和平均情况
空间复杂度
O(1) - 原地排序
稳定性
稳定
算法描述
冒泡排序通过重复地遍历要排序的列表,比较相邻的元素并交换它们的位置来完成排序。 每一轮遍历都会将当前未排序部分的最大元素"冒泡"到正确的位置。
伪代码
procedure bubbleSort(A : list of sortable items)
n := length(A)
repeat
swapped := false
for i := 1 to n-1 inclusive do
if A[i-1] > A[i] then
swap(A[i-1], A[i])
swapped := true
end if
end for
n := n - 1
until not swapped
end procedure
排序算法比较
冒泡排序
最简单的排序算法,通过重复交换相邻元素实现排序。
O(n²)
O(1)
稳定
选择排序
每次选择最小元素放到已排序部分的末尾。
O(n²)
O(1)
不稳定
插入排序
构建最终排序数组,一次插入一个元素。
O(n²)
O(1)
稳定
归并排序
分治算法,将数组分成两半,分别排序后合并。
O(n log n)
O(n)
稳定
快速排序
分治算法,选择一个基准元素将数组分成两部分。
O(n log n)
O(log n)
不稳定
堆排序
利用二叉堆数据结构进行排序。
O(n log n)
O(1)
不稳定