浙江省建设协会网站,wordpress是,wordpress倒入数据,商城网站建设模板文章目录 TypeScript 算法手册 - 冒泡排序1. 冒泡排序简介1.1 冒泡排序定义1.2 冒泡排序特点 2. 冒泡排序步骤过程拆解2.1 比较相邻元素2.2 交换元素2.3 重复过程 3. 冒泡排序的优化3.1 提前退出3.2 记录最后交换位置案例代码和动态图 4. 冒泡排序的优点5. 冒泡排序的缺点总结 … 文章目录 TypeScript 算法手册 - 冒泡排序1. 冒泡排序简介1.1 冒泡排序定义1.2 冒泡排序特点 2. 冒泡排序步骤过程拆解2.1 比较相邻元素2.2 交换元素2.3 重复过程 3. 冒泡排序的优化3.1 提前退出3.2 记录最后交换位置案例代码和动态图 4. 冒泡排序的优点5. 冒泡排序的缺点总结 【 已更新完 TypeScript 设计模式 专栏感兴趣可以关注一下一起学习交流 】
TypeScript 算法手册 - 冒泡排序
1. 冒泡排序简介
1.1 冒泡排序定义
冒泡排序是一种简单的排序算法重复地遍历要排序的数列一次比较两个元素他们的顺序错误就把他们交换过来。这个过程就像水底的气泡一样从底部向上冒泡到水面这也是冒泡排序名字的由来。
用 TypeScript 代码表示一个简单的冒泡排序:
function bubbleSort(arr: number[]): number[] {const len arr.length;for (let i 0; i len - 1; i) {for (let j 0; j len - 1 - i; j) {if (arr[j] arr[j 1]) {[arr[j], arr[j 1]] [arr[j 1], arr[j]];}}}return arr;
}1.2 冒泡排序特点
简单直观: 冒泡排序是最简单的排序算法之一稳定性: 冒泡排序是一种稳定的排序算法原地排序: 冒泡排序是原地排序算法不需要额外的存储空间
2. 冒泡排序步骤过程拆解
2.1 比较相邻元素
// 交换元素
if (arr[j] arr[j 1]) {
}2.2 交换元素
// 交换元素
[arr[j], arr[j 1]] [arr[j 1], arr[j]];2.3 重复过程
// 比较和交换
for (let i 0; i len - 1; i) {for (let j 0; j len - 1 - i; j) {}
}3. 冒泡排序的优化
3.1 提前退出
// 提前退出
function bubbleSortOptimized(arr: number[]): number[] {const len arr.length;for (let i 0; i len - 1; i) {let swapped false;for (let j 0; j len - 1 - i; j) {if (arr[j] arr[j 1]) {[arr[j], arr[j 1]] [arr[j 1], arr[j]];swapped true;}}if (!swapped) break;}return arr;
}3.2 记录最后交换位置
// 记录最后交换位置
function bubbleSortFurther(arr: number[]): number[] {let lastExchangeIndex 0;let sortBorder arr.length - 1;for (let i 0; i arr.length - 1; i) {let isSorted true;for (let j 0; j sortBorder; j) {if (arr[j] arr[j 1]) {[arr[j], arr[j 1]] [arr[j 1], arr[j]];isSorted false;lastExchangeIndex j;}}sortBorder lastExchangeIndex;if (isSorted) break;}return arr;
}案例代码和动态图
const array [29, 10, 14, 66, 37, 14];
const sortedArray bubbleSort(array);
console.log(sortedArray); // [10, 14, 14, 29, 37, 66]4. 冒泡排序的优点
代码简单容易理解稳定排序原地排序不需要额外空间
5. 冒泡排序的缺点
时间复杂度较高为 O(n^2)交换次数过多
总结
冒泡排序是一种简单直观的排序算法,虽然效率不高,但是在处理小规模数据或者基本有序的数据时还是很有用的。理解冒泡排序的原理对于学习更复杂的排序算法也很有帮助。
喜欢的话就点个赞 ❤️,关注一下吧,有问题也欢迎讨论指教。感谢大家!!!
下期预告: TypeScript 算法手册 - 选择排序