JavaScript之冒泡排序

简介: JavaScript之冒泡排序

前言


冒泡排序,是一个相对较为简单易于理解的排序算法。下面以升序为例。


正文


原理


  • 比较相邻的两个元素a、b。若 a > b,则互换 a 与 b 的位置,否则不变。
  • 按照上面的规则,第一轮循环次数为 array.length - 1,一轮循环结束,数组最后一项应该是最大数。
  • 第二轮开始,循环次数为 array.length - 1 - 1,同样把本次循环的最大项互换到 array[length - 1 - 1] 的位置上。
  • 以此类推...


图示


33.gif

冒泡排序


实现

// 冒泡排序(升序)
function bubbleSort(arr) {
  for (let i = 0; i < arr.length - 1; 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;
}
const array = [8, 12, 4, 0, 22, 8, 21, 3, 56];
console.log(bubbleSort(array));  // [0, 3, 4, 8, 8, 12, 21, 22, 56]


时间复杂度


可知冒泡排序执行次数是 (n-1) + (n-2) + ... + 2 + 1 = (n^2 - n)/2,根据时间复杂度推导方式,可得到 O(n^2)

目录
相关文章
|
6月前
|
JavaScript 算法
|
6月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
49 2
|
4月前
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
75 1
|
6月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素依次触发事件,而事件捕获则从最外层元素向内层元素传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。例如: ```javascript element.addEventListener(&#39;click&#39;, console.log, false); // 冒泡 element.addEventListener(&#39;click&#39;, console.log, true); // 捕获 ```
44 0
|
6月前
|
JavaScript
JS事件,你真的懂吗(捕获,冒泡)?
JS事件,你真的懂吗(捕获,冒泡)?
59 0
|
11月前
|
JavaScript 前端开发
原生JavaScript之dom如何进行事件监听(事件捕获/冒泡)
原生JavaScript之dom如何进行事件监听(事件捕获/冒泡)
144 1
|
JavaScript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
42 0
|
JavaScript 容器
js中的事件冒泡与事件捕获
js中的事件冒泡与事件捕获
44 0
|
JavaScript 前端开发
JS的冒泡和如何阻止事件冒泡
JS的冒泡和如何阻止事件冒泡
167 0
|
JavaScript
js中 事件流与阻止冒泡 事件对象.stopPropagation()
js中 事件流与阻止冒泡 事件对象.stopPropagation()