JavaScript学习笔记—冒泡和选择排序(性能差)
数组内各元素按升或降序排序
[9,1,3,2,8,0,5,7,6,4]
思路1(冒泡排序):
- 比较相邻两个元素,然后根据大小来决定是否交换它们的位置
- 例子:
第1次排序:1, 3, 2, 8, 0, 5, 7, 6, 4, 9
第2次排序:1, 2, 3, 0, 5, 7, 6, 4, 8, 9
第3次排序:1, 2, 0, 3, 5, 6, 4, 7, 8, 9
第4次排序:1, 0, 2, 3, 5, 4, 6, 7, 8, 9
第5次排序:0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - 这种排序方式被称为冒泡排序,冒泡排序是最慢的排序方式,数字少还可以凑合用,不适用于数据量较大的排序
const arr = [9, 1, 3, 2, 8, 0, 5, 7, 6, 4]; for(let i = 0; i < arr.length - 1; i++) { for(let j = 0; j < arr.length - 1 - j; j++) { // - 是每次内循环减一次提高效率 // arr[j](前边的元素) arr[j+1](后边元素) if(arr[j] > arr[j + 1]) { // 大数在前,小数在后,需要交换两个元素的位置 let temp = arr[j]; // 临时变量用来存储arr[j]的值 arr[j] = arr[j + 1]; // 将arr[j+1]的值赋给arr[j] arr[j + 1] = temp; // 修改arr[j+1]的值 } } console.log("第"+(i+1)+"次排序:" + arr); } /* 第1次排序:1,3,2,8,0,5,7,6,4,9 第2次排序:1,2,3,0,5,7,6,4,8,9 第3次排序:1,2,0,3,5,6,4,7,8,9 第4次排序:1,0,2,3,5,4,6,7,8,9 第5次排序:0,1,2,3,4,5,6,7,8,9 第6次排序:0,1,2,3,4,5,6,7,8,9 第7次排序:0,1,2,3,4,5,6,7,8,9 第8次排序:0,1,2,3,4,5,6,7,8,9 第9次排序:0,1,2,3,4,5,6,7,8,9 */
思路2(选择排序):
- 取出一个元素,然后将其他元素和该元素进行比较,如果其他元素比该元素小,则交换两个元素的位置
- 例子:9, 1, 3, 2, 8, 0, 5, 7, 6, 4
第1次排序:0, 9, 3, 2, 8, 1, 5, 7, 6, 4
第2次排序:0, 1, 9, 3, 8, 2, 5, 7, 6, 4
第3次排序:0, 1, 2, 9, 8, 3, 5, 7, 6, 4
第4次排序:0, 1, 2, 3, 9, 8, 5, 7, 6, 4
第5次排序:0, 1, 2, 3, 4, 9, 8, 7, 6, 5
第6次排序:0, 1, 2, 3, 4, 5, 9, 8, 7, 6
第7次排序:0, 1, 2, 3, 4, 5, 6, 9, 8, 7
第8次排序:0, 1, 2, 3, 4, 5, 6, 7, 9, 8
第9次排序:0, 1, 2, 3, 4, 5, 6, 7, 8, 9
第10次排序:0, 1, 2, 3, 4, 5, 6, 7, 8, 9
const arr = [9, 1, 3, 2, 8, 0, 5, 7, 6, 4]; for(let i = 0; i < arr.length; i++) { for(let j = i + 1; j < arr.length; j++) { // arr[i](前边的元素) arr[i+1](后边元素) if(arr[i] > arr[j]) { // 大数在前,小数在后,需要交换两个元素的位置 let temp = arr[i]; // 临时变量用来存储arr[i]的值 arr[i] = arr[j]; // 将arr[j]的值赋给arr[i] arr[j] = temp; // 修改arr[j]的值 } } console.log("第"+(i+1)+"次排序:" + arr); }
分类:
JavaScript
标签:
JavaScript学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!