排序在做什么
排序就是把一组杂乱的数据,按照从小到大(升序)或从大到小(降序)的顺序重新排列。比如整理扑克牌,把乱序的牌按点数排好,这就是排序。
冒泡排序原理
冒泡排序的核心思想是:相邻比较,大数后移。就像水中的气泡,大的气泡会慢慢浮到水面。每一轮,从第一个元素开始,依次比较相邻的两个元素,如果前面的比后面的大,就交换它们。这样一轮下来,最大的数就会“冒”到最后面。重复这个过程,直到所有数都排好。
为什么是 O(n²)
冒泡排序的时间复杂度是 O(n²),其中 n 是数据个数。因为需要两层循环:外层循环 n-1 轮,内层循环每轮比较 n-1 次(逐渐减少)。总比较次数约为 n(n-1)/2,所以是平方级别。简单说,数据量翻倍,时间大约变成原来的4倍。
稳定性是什么
稳定性是指排序后,相等元素的相对顺序是否保持不变。冒泡排序是稳定的,因为当相邻元素相等时,我们不交换它们,所以相等元素的先后顺序不会改变。这在某些场景(如按多关键字排序)中很重要。
常见排序对照表
| 排序算法 | 平均时间复杂度 | 最坏时间复杂度 | 空间复杂度 | 稳定性 |
|---|---|---|---|---|
| 冒泡排序 | O(n²) | O(n²) | O(1) | 稳定 |
| 选择排序 | O(n²) | O(n²) | O(1) | 不稳定 |
| 插入排序 | O(n²) | O(n²) | O(1) | 稳定 |
| 快速排序 | O(n log n) | O(n²) | O(log n) | 不稳定 |
| 归并排序 | O(n log n) | O(n log n) | O(n) | 稳定 |