我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

  • 基础

  • 框架

  • 情商

  • 算法

    • 说说对二分查找的理解
    • 说说对动态规划、分而治之的理解
    • 说说对图的理解
    • 说说对堆的理解
    • 说说对归并排序的理解
    • 说说对快速排序的理解
    • 说说对插入排序的理解
    • 说说对数据结构的理解
    • 说说对栈、队列的理解及应用
    • 说说对树(二叉树)的理解
    • 说说对算法的理解及应用场景
    • 说说对贪心算法,回溯算法的理解
    • 说说对选择排序的理解
    • 说说有哪些排序算法及理解
    • 说说算法复杂度有哪些?
    • 说说对冒泡排序的理解
      • 是什么
      • 怎么用
        • 基本冒泡(循环2次)
        • 升级冒泡(只循环一次)
      • 场景
  • 网络

  • 千锤百炼
  • 算法
fangdown
2021-10-20
目录

说说对冒泡排序的理解

# 是什么

冒泡: 如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”

# 怎么用

  • 基本冒泡O(n^2)
  • 升级冒泡O(n)

# 基本冒泡(循环2次)

function maopao(arr) {
  const len = arr.length - 1;
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < len - i; j++) {
      if (arr[j] > arr[j + 1]) {
        temp = arr[j + 1];
        arr[j+1] = arr[j];
        arr[j] = temp;
      }
    }
  }
  return arr;
}

const arr = [ 1,19,2,5,99,23]
const res = maopao(arr)
console.log(res) // [ 1, 2, 5, 19, 23, 99 ]

# 升级冒泡(只循环一次)

function maopao2(arr) {
  let i = arr.length - 1;
  while (i > 0) {
    let pos = 0;
    for (let j = 0; j < i; j++) {
      if (arr[j] > arr[j + 1]) {
        temp = arr[j + 1];
        arr[j + 1] = arr[j];
        arr[j] = temp;
      }
      pos = j;
    }
    i = pos; // 记录最后一次变化的位置
  }
  return arr;
}
const arr = [1, 19, 2, 5, 99, 23]; 
const res = maopao2(arr); 
console.log(res);// [ 1, 2, 5, 19, 23, 99 ]

# 场景

入门算法介绍

#算法
上次更新: 2021/12/19, 18:05:42
说说算法复杂度有哪些?
如何理解CDN?说说实现原理

← 说说算法复杂度有哪些? 如何理解CDN?说说实现原理→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式