gentlecoder

欲买桂花同载酒,终不似,少年游

  • 主页
  • 随笔
所有文章 友情链接 关于我

gentlecoder

欲买桂花同载酒,终不似,少年游

  • 主页
  • 随笔

冒泡排序

2019-03-31

似乎生活中常常会遇到这种情况,你去一家公司面试,前面面的都挺好,你觉得你对基础的了解很好,进阶知识也都答上来了,然后面试官说,”那么好吧,就写一个最简单的冒泡算法看看吧。”

???我头发。我leetcode上刷了100题,你叫我写冒泡算法?

为了应对这种情况,本文列举几种冒泡算法仅供参考。

简单冒泡:

1
2
3
4
5
6
7
8
9
10
const bubble = arr => {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
};

这种没有什么好说的了。

进阶简单冒泡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const bubble = 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]) {
pos = j;
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
i = pos;
}
return arr;
};

记住上次交换的位置,该位置后的都是已经排好序的,下次冒泡时到该位置停止,若pos等于0,则说明全部排序完成。

进一步优化

为了避免一些极端的情况,可以正向反向冒泡同时进行,并记录位置,代码略。

图示

bubble

赏

谢谢你请我吃糖果

支付宝
微信
  • 算法

扫一扫,分享到微信

微信分享二维码
选择排序
leetcode算法 214
© 2021 gentlecoder
Hexo Theme Yilia by Litten
  • 所有文章
  • 友情链接
  • 关于我

tag:

  • JavaScript
  • 前端
  • vue
  • bootstrap
  • css
  • git
  • html
  • 算法
  • leetcode
  • 正则
  • es6
  • SegmentFault
  • npm
  • nodejs
  • threejs
  • vscode
  • vue-cli
  • vuejs
  • CSS
  • WebAssembly
  • 函数式编程
  • 前端基础

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 浏览器的渲染机制

    2021-01-03

    #前端基础

  • Intersection Observer详解

    2021-01-02

    #JavaScript

  • 初探WebAssembly

    2020-05-25

    #JavaScript#WebAssembly

  • css-虚线边框滚动效果

    2019-05-05

    #css

  • css-字体文本相关

    2019-05-05

    #css

  • git subtree的使用

    2019-04-28

    #git

  • vscode一些配置

    2019-04-24

    #vscode

  • 关于伪元素

    2019-04-21

    #CSS

  • css中的百分比值到底是相对于谁

    2019-04-20

    #css

  • css渐变了解一下

    2019-04-20

  • 原生css中的变量

    2019-04-20

  • es6实现一个sleep函数

    2019-04-18

    #JavaScript

  • segmentfault答题汇总

    2019-04-15

    #SegmentFault

  • JS中this的软绑定

    2019-04-14

    #JavaScript

  • MouseEvent了解一下

    2019-04-13

    #JavaScript

  • 模拟vdom提取dom树中关键信息入json字符串

    2019-04-13

  • 切换页面主题样式研究及less教程

    2019-04-13

    #JavaScript#css#html

  • h5自带拖拽简单教程

    2019-04-13

    #JavaScript#html

  • 日常问题总结

    2019-04-13

    #JavaScript

  • 你不知道的js

    2019-04-13

    #JavaScript

  • setInterval实现打字机效果

    2019-04-10

    #JavaScript

  • 由一道题引申出的事件循环、let ar用法、iife、块级作用域

    2019-04-10

    #JavaScript

  • 你真的了解proxy和defineProperties吗

    2019-04-10

    #JavaScript

  • 关于BFC

    2019-04-10

    #css

  • 手写instance

    2019-04-07

    #JavaScript

  • 实现一个宽高自适应的正方形

    2019-04-07

    #css

  • 位运算符的使用

    2019-04-07

    #JavaScript#算法

  • string方法之padStart、padEnd

    2019-04-07

  • string方法之charAt,charCodeAt和charPointAt

    2019-04-07

  • vdom作用

    2019-04-07

    #JavaScript

  • background熟练掌握了,那么mask呢

    2019-04-07

  • clip-path剪裁出你想要的图形

    2019-04-07

    #css

  • 手写promise,promise.all,promise.race

    2019-04-07

    #JavaScript

  • 如何实现可以使用for...of遍历对象

    2019-04-07

    #JavaScript

  • 手写generator函数自动执行器

    2019-04-07

    #JavaScript

  • 深拷贝了解一下吗

    2019-04-07

    #JavaScript

  • 两种数组去重方法

    2019-04-07

    #JavaScript

  • 少年,函数式编程之reduce了解一下

    2019-04-04

    #JavaScript#函数式编程

  • 少年,函数式编程之管道函数了解一下

    2019-04-02

    #JavaScript#函数式编程

  • 少年,函数式编程之柯里化了解一下

    2019-04-02

    #JavaScript#函数式编程

  • 关于CSS优化需要知道的事

    2019-04-02

    #css

  • 三栏布局-圣杯、双飞翼以及其他

    2019-04-02

    #css

  • 你知道快排吗

    2019-04-01

    #算法

  • js正则相关

    2019-04-01

    #正则

  • 关于防抖debounce和截流throttle

    2019-04-01

    #JavaScript

  • 在我水了11种水平垂直居中方法之后,我终于明白了

    2019-03-31

    #css

  • 关于原型、原型链、和继承

    2019-03-31

    #JavaScript

  • 选择排序

    2019-03-31

    #算法

  • 冒泡排序

    2019-03-31

    #算法

  • leetcode算法 214

    2019-03-30

    #算法#leetcode

  • leetcode算法 5

    2019-03-30

    #算法#leetcode

  • leetcode算法 140

    2019-03-30

    #算法#leetcode

  • leetcode算法 88

    2019-03-29

    #算法#leetcode

  • git删除远程仓库的提交

    2019-03-28

    #git

  • 使用css画一条0.5px的线

    2018-09-28

    #前端#css

  • vue-cli生成的build及config文件夹中文件解读(4)build.js

    2018-04-02

    #前端#vue#vue-cli

  • vue-cli生成的build及config文件夹中文件解读(3)webpack.dev.conf.js

    2018-04-02

    #前端#vue#vue-cli

  • vue-cli生成的build及config文件夹中文件解读(2)webpack.prod.conf.js

    2018-04-02

    #前端#vue#vue-cli

  • vue-cli生成的build及config文件夹中文件解读(1)webpack.base.conf.js

    2018-03-30

    #前端#vue#vue-cli

  • 'nodejs以及npm使用指南'

    2018-03-30

    #前端#npm#nodejs

  • js三种模块化方式对比以及编译打包机制介绍

    2018-03-21

    #JavaScript#前端#es6

  • js object篇-Object.defineProperty()

    2018-03-20

    #JavaScript#前端

  • 'bootstrap-vue使用'

    2018-03-07

    #前端#vue#bootstrap

  • 页面展示html标签和JavaScript代码

    2018-03-06

    #前端#html

  • 'vue简单教程'

    2018-03-02

    #前端#vuejs

  • 'threejs简单教程'

    2018-02-28

    #前端#threejs

gentlecoder,
寻找世界的真相

热爱读书和游戏,
目前是一枚前端

想做一个温柔的人,想做一桌好吃的饭
欲买桂花同载酒,终不似,少年游。