冒泡排序
冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的元素,如果它们的顺序错误就把它们交换过来。这个过程重复进行,直到列表完全有序。
算法原理
冒泡排序的基本思想是:每次遍历列表时,比较相邻的两个元素,如果前一个元素大于后一个元素,就交换它们的位置。这样,较大的元素会像气泡一样逐渐"浮"到列表的末尾。经过多次遍历后,列表就会变得有序。
算法步骤
- 从第一个元素开始,比较相邻的两个元素
- 如果前一个元素大于后一个元素,交换它们的位置
- 继续比较下一对相邻元素,直到到达列表末尾
- 重复上述过程,每次遍历后,最大的元素会"冒泡"到末尾
- 重复遍历列表,直到所有元素都排好序
时间复杂度
- 最坏情况:O(n²) - 当列表是逆序时
- 平均情况:O(n²)
- 最好情况:O(n) - 当列表已经有序时(优化版本)
空间复杂度
O(1) - 冒泡排序是原地排序算法,只需要常数级别的额外空间。
稳定性
冒泡排序是稳定的排序算法,相等元素的相对顺序不会改变。
适用场景
- 数据规模较小的简单排序任务
- 教学和学习排序算法的基础
- 几乎已经有序的数据(使用优化版本)
优化建议
- 添加标志位,如果在某次遍历中没有发生交换,说明列表已经有序,可以提前结束
- 记录最后一次交换的位置,减少不必要的比较次数