冒泡排序(Bubble Sort)基本思想
:
经过多次迭代,通过相邻元素之间的比较与交换,使值较小的元素逐步从后面移到前面,值较大的元素从前面移到后面。
大数据往上冒泡,小数据往下沉,也就是小数据在左边,大数据在右边
最简单也是性能最差的排序算法
入门级排序算法
代码实现
js
//不优化直接写
function bubbleSort(data) {
console.time("test");
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < data.length - i - 1; j++) {
if (data[j] > data[j + 1]) {
let temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
console.timeEnd("test");
return data;
}
//优化
function bubbleSort1(data) {
console.time("test1");
for (let i = 0; i < data.length; i++) {
//
for (let j = 0; j < data.length - 1 - i; j++) {
if (data[j] > data[j + 1]) {
let temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
console.timeEnd("test1");
return data;
}
复杂度
- 时间复杂度O(1),只用到了几个辅助的常量,i,j
- 空间复杂度O(n²)
代码测试
js
const ret = bubbleSort([10,20,4,9,100,300,123]);
console.log("🚀 ~ ret:", ret) // [4, 9, 10, 20, 100, 123, 300]
const ret2 = bubbleSort1([10,20,4,9,100,300,123]);
console.log("🚀 ~ ret:", ret2) // [4, 9, 10, 20, 100, 123, 300]