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);
}
posted @   程序员张3  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示