冒泡排序?
冒泡排序
(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数据,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来,直到没有需要交换的元素为止。
冒泡排序的基本步骤如下:
- 从第一个元素开始,比较相邻的两个元素。如果第一个元素大于第二个元素,则交换它们。
- 移动到下一对相邻的元素,重复步骤 1。
- 继续这个过程,直到最后一对相邻的元素
- 如果在整个过程中没有发生任何交换,则说明数据已经排好序。
- 否则,重复步骤 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),不需要额外的空间
冒泡排序的缺点是:
- 时间复杂度高
- 不适合大规模的数据排序
- 不稳定排序算法(如果两个元素相等,可能会交换它们的位置)
冒泡排序的应用场景:
- 小规模的数据排序
- 需要简单易懂的排序算法
- 不需要高效的排序算法