美文网首页
JS实现冒泡排序及优化

JS实现冒泡排序及优化

作者: 临安linan | 来源:发表于2019-07-16 00:56 被阅读0次

实现原理

数组中有n个数,从第一个数开始,逐个比较相邻的两数,如果前面的大于后面的,交换位置,将比较大的数往后排。

实现

function bubbleSort(arr) {
  for (let i = 0; i < arr.length - 1; i++) {  // 比较轮数
    for (let j = 0; j < arr.length - 1 - i; j++) {  // 每轮比较次数,由于每次最后一个都是最大值,每轮少比较i次 
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
      }
    }
  }
  return arr;
}

优化1: len

let len = arr.length  // 将len取出,避免每轮循环都去获取
for (let i = 0; i < len - 1; i++) {
  for (let j = 0; j < len - 1 - i; j++) {
    // ...
  }
}

优化2: 数值边缘检测

for (let i = 0; i < len - 1; i++) {
  for (let j = 0; j < len - 1 - i; j++) {
    if(arr[j] > Number.MAX_VALUE || arr[j] < -Number.MAX_VALUE) return "数值溢出!"
  }
}

优化3: 本轮没有交换的标志位

形如[1,2,3,4,6,5]这种数组,只需比较一轮就已经排好了。
所以我们加一个标志位,每次外层循环开始前将标志位置为true,内层循环过程中,出现两数交换时,置为false。
如果内层循环没有任何两数进行交换,标志位为true,表示排序完成。 这样我们就可以减少不必要的排序,提高性能

function bubbleSort(arr) {
  let done  // 已经完成的标志位
  let len = arr.length
  for (let i = 0; i < len - 1; i++) {
    done = true
    for (let j = 0; j < len - 1 - i; j++) {
      if(arr[j] > Number.MAX_VALUE || arr[j] < -Number.MAX_VALUE) return "数值溢出!"
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
        done = false
      }
    }
    if(done){
      return arr
    }
  }
  return arr;
}

相关文章

  • JS实现冒泡排序及优化

    实现原理 数组中有n个数,从第一个数开始,逐个比较相邻的两数,如果前面的大于后面的,交换位置,将比较大的数往后排。...

  • Java 实现冒泡排序

    本文介绍冒泡排序原理及 Java 语言实现。 目录 冒泡排序原理 代码实现 冒泡排序原理 比较相邻的元素,升序时如...

  • 冒泡排序的C语言实现

    冒泡排序 优化后的冒泡排序

  • 冒泡排序及冒泡排序优化

    冒泡排序(Bubble Sort),是计算机科学领域一种较简单的排序算法。 冒泡排序会重复地走访过要排序的元素数列...

  • Java 排序

    冒泡排序 1、冒泡排序及算法实现 什么是冒泡排序呢?冒泡排序是一种简单的排序方法,它的基本思想是:通过相邻两个元素...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 冒泡排序及优化

  • # 前端面试准备(day1)

    js算法与应用 排序部分 快速排序 优化过的冒泡排序 数组去重 编写一个JavaScript函数,输入指定类型的选...

  • 冒泡排序(ios和前端script)

    ios之冒泡排序 未优化之前 优化之后 前端冒泡排序(与上同理) 方式一: 方式二:

  • 冒泡排序的理解

    文章参考:图解冒泡排序及优化[https://www.cnblogs.com/kalton/p/13649798....

网友评论

      本文标题:JS实现冒泡排序及优化

      本文链接:https://www.haomeiwen.com/subject/amuakctx.html