Skip to content

冒泡排序?

冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数据,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来,直到没有需要交换的元素为止。

冒泡排序的基本步骤如下:

  1. 从第一个元素开始,比较相邻的两个元素。如果第一个元素大于第二个元素,则交换它们。
  2. 移动到下一对相邻的元素,重复步骤 1。
  3. 继续这个过程,直到最后一对相邻的元素
  4. 如果在整个过程中没有发生任何交换,则说明数据已经排好序。
  5. 否则,重复步骤 1-4,直到没有需要交换的元素为止。

demo

代码

js
// 从左到右排序,
// 它的核心逻辑是:在每一轮冒泡中,将当前元素与其后面的元素进行比较,如果当前元素大于后面的元素,则交换它们的位置。
// 这样,每一轮冒泡都会将最大的元素冒泡到数组的末尾。
function sort(data = []) {
	for (let i = 0; i < data.length; i++) {
		for (let j = i + 1; j < data.length; j++) {
			if (data[i] > data[j]) {
				[data[i], data[j]] = [data[j], data[i]];
			}
		}
	}
	return data;
}

sort([3, 5, 1, 26, 6]);
js
// 从右到左排序,
// 它的核心逻辑是:在每一轮冒泡中,将当前元素与前面的元素进行比较,如果当前元素小于前面的元素,则交换它们的位置。
// 这样,每一轮冒泡都会将最小的元素冒泡到数组的开头。
function sort(data = []) {
	for (let i = 0; i < data.length - 1; i++) {
		for (let j = 0; j < data.length - 1 - i; j++) {
			if (data[j + 1] < data[i]) {
				[data[j], data[j + 1]] = [data[j + 1], data[j]];
			}
		}
	}
	return data;
}
sort([3, 5, 1, 26, 6]);

可视化

优缺点

冒泡排序的特点是:

  • 简单易懂
  • 实现容易
  • 时间复杂度为 O(n^2),不适合大规模的数据排序
  • 空间复杂度为 O(1),不需要额外的空间

冒泡排序的缺点是:

  • 时间复杂度高
  • 不适合大规模的数据排序
  • 不稳定排序算法(如果两个元素相等,可能会交换它们的位置)

冒泡排序的应用场景:

  • 小规模的数据排序
  • 需要简单易懂的排序算法
  • 不需要高效的排序算法

wangxiaoze | MIT License.