前端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]
相关推荐
姑苏洛言14 分钟前
编写产品需求文档:黄历日历小程序
前端·javascript·后端
知识分享小能手38 分钟前
Vue3 学习教程,从入门到精通,使用 VSCode 开发 Vue3 的详细指南(3)
前端·javascript·vue.js·学习·前端框架·vue·vue3
姑苏洛言1 小时前
搭建一款结合传统黄历功能的日历小程序
前端·javascript·后端
你的人类朋友2 小时前
🤔什么时候用BFF架构?
前端·javascript·后端
知识分享小能手2 小时前
Bootstrap 5学习教程,从入门到精通,Bootstrap 5 表单验证语法知识点及案例代码(34)
前端·javascript·学习·typescript·bootstrap·html·css3
一只小灿灿3 小时前
前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理
前端·opencv·计算机视觉
前端小趴菜053 小时前
react状态管理库 - zustand
前端·react.js·前端框架
Jerry Lau3 小时前
go go go 出发咯 - go web开发入门系列(二) Gin 框架实战指南
前端·golang·gin
你的冰西瓜3 小时前
C++排序算法全解析(加强版)
c++·算法·排序算法