踩坑日记 - 排序算法之冒泡排序
1、冒泡排序
一种简单又稳定的,也是原地的排序算法。每次的遍历都是将遍历过程中最大或最小的元素沉入最后,故此叫冒泡排序
2、排序原理3、排序步骤:
遍历相邻两元素,交换符合条件的两个元素。
3、排序步骤
1) 外循环是遍历每个元素,每次都放置好一个元素;
2) 内循环是比较相邻的两个元素,把大的元素交换到后面;
3) 等到第一步中循环好了以后也就说明全部元素排序好了;
4、复杂度
1)平均:
时间复杂度: O(n^2);空间复杂度:O(1)
2)最优:已经排好序的序列
时间复杂度: O(n^2);空间复杂度:0
3)最差:序列正好与结果相反
时间复杂度: O(n^2);空间复杂度:O(n)
5、例子
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>排序 - 冒泡排序</title>
</head>
<body>
<div>
这是数组原序列:[20, 25, 1, 2, 78, 100, 56, 5, 22,66]
</div>
</body>
</html>
<script>
// const originArr = [20, 25, 1, 2, 78, 100, 56, 5, 22,66]; // 普通
// const originArr = [1, 2, 5, 20, 22, 25, 56, 66, 78, 100]; // 最优
const originArr = [100, 78, 66, 56, 25, 22, 20, 5, 2, 1]; // 最差
const newArr = JSON.parse(JSON.stringify(originArr));
const len = originArr.length;
const len2 = len - 1;
// console.log('这是数组原序列:[20, 25, 1, 2, 78, 100, 56, 5, 22,66]')
// console.log('这是数组原序列:[1, 2, 5, 20, 22, 25, 56, 66, 78, 100]')
console.log('这是数组原序列:[100, 78, 66, 56, 25, 22, 20, 5, 2, 1]')
for(let i = 0; i < len; i++){
for(let j = 0; j < len - i - 1; j++){
if (originArr[j] > originArr[j + 1]) {
console.error('我是元素交换')
const temp = originArr[j + 1];
originArr[j +1] = originArr[j];
originArr[j] = temp;
}
}
console.log('这是第' + (i + 1) + '次循环的结果:' + JSON.parse(JSON.stringify(originArr)))
}
console.log('这是最终结果:' + originArr)
</script>
1)普通

2)最优

3)最差

https://blog.csdn.net/weixin_43419883/article/details/88418730
浙公网安备 33010602011771号