每次将相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足,就交换这两个相邻元素的次序。
一次冒泡至少让一个元素移动到它应该排列的位置,重复N次,就完成了冒泡排序。
时间复杂度
- 最好情况(已全部有序):O(n)
- 最坏情况(全部逆序):O(n²)
空间复杂度
- O(1)
- 稳定
css
///冒泡排序
Future<void> bubbleSort(List<int> src) async {
//控制需要进行排序的次数。每一轮循环都会确定一个数字的最终位置。
for (int i = 0; i < src.length; ++i) {
//遍历当前未排序的元素,通过相邻的元素比较并交换位置来完成排序。
for (int j = 0; j < src.length - i - 1; ++j) {
//如果 _numbers[j] 大于 _numbers[j + 1],则交换它们的位置,确保较大的元素移到右边。
if (src[j] > src[j + 1]) {
int temp = src[j];
src[j] = src[j + 1];
src[j + 1] = temp;
}
}
}
}