前端javascript中的排序算法之冒泡排序

冒泡排序(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]
相关推荐
谷粒.3 分钟前
Cypress vs Playwright vs Selenium:现代Web自动化测试框架深度评测
java·前端·网络·人工智能·python·selenium·测试工具
小飞侠在吗6 小时前
vue props
前端·javascript·vue.js
DsirNg7 小时前
页面栈溢出问题修复总结
前端·微信小程序
小徐_23337 小时前
uni-app 也能远程调试?使用 PageSpy 打开调试的新大门!
前端·微信小程序·uni-app
大怪v7 小时前
【Virtual World 03】上帝之手
前端·javascript
别叫我->学废了->lol在线等9 小时前
演示 hasattr 和 ** 解包操作符
开发语言·前端·python
霍夫曼9 小时前
UTC时间与本地时间转换问题
java·linux·服务器·前端·javascript
DARLING Zero two♡9 小时前
浏览器里跑 AI 语音转写?Whisper Web + cpolar让本地服务跑遍全网
前端·人工智能·whisper
Lovely Ruby10 小时前
前端er Go-Frame 的学习笔记:实现 to-do 功能(三),用 docker 封装成镜像,并且同时启动前后端数据库服务
前端·学习·golang
深红10 小时前
玩转小程序AR-实战篇
前端·微信小程序·webvr