美文网首页
冒泡排序算法(JavaScript实现)

冒泡排序算法(JavaScript实现)

作者: 小m_up | 来源:发表于2017-07-20 19:51 被阅读34次
算法流程

比较相邻的元素,如果第一个比第二个大,就交换,从第一对元素开始到最后一对元素做同样的工作,每次都重复以上步骤,当遍历arr.length-1次后,遍历完所有的元素

复杂度

时间复杂度为:O(n^2)

代码实现

代码:

function bubbleSort(arr){
  for(var i = 0; i < arr.length-1; i++){
    for(var j = 0;j < arr.length-i;j++){
      if(arr[j] > arr[j+1]){
        var t = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = t;
      }
    }
  }
  
  return arr;
}

var arr = [1,4,2,5,3];
bubbleSort(arr); // [1 , 2 , 3 , 4 , 5]
算法优化

当待排序数组为[1, 3, 4, 5, 6, 7, 8, 9, 2]时:
第1趟排序的结果为: 1 2 3 4 5 6 7 8 9
此时其实序列已经完成,但是根据上述代码仍得继续遍历,直至第9趟排序。这显然是不合理的,如果我们能在代码中加入一个flag标记上一趟排序中是否进行过交换,如果进行过未进行交换,说明当前数组以及有序。
代码如下:

function bubbleSort(arr){
  var flag = true;
  while(true){
    flag = false;
    for(var i = 0; i < arr.length-1; i++){
      for(var j = 0;j < arr.length-i;j++){
        if(arr[j] > arr[j+1]){
          var t = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = t;
          flag = true;
        }
      }
    } 
  }
  
  return arr;
}

var arr = [1, 3, 4, 5, 6, 7, 8, 9, 2];
bubbleSort(arr);  //[1, 2, 3, 4, 5, 6, 7, 8, 9]

相关文章

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 2019-08-11

    Javascript中常用几种基础算法 1 排序-冒泡排序 //冒泡排序 function bubbleSort...

  • JS实现排序算法

    原文:常见排序算法之JavaScript实现 - 知乎 目录 冒泡排序 选择排序 插入排序 合并排序 快速排序 1...

  • JavaScript实现经典排序算法

    使用JavaScript实现的经典排序算法 util 冒泡 简单选择 直接插入 快速排序 堆排序 归并排序

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • JavaScript 中的算法

    JavaScript 中的算法 Sort 以下例子全部以正序为标准 bubbleSort 冒泡排序 冒泡排序算法的...

  • Js 实现基础排序算法

    本文使用 JavaScript 实现的基础的 8 种排序算法,复杂度归纳如下:O(n^2) ——冒泡排序、插入排序...

  • 算法:冒泡排序

    本文内容:1、什么是冒泡排序?2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? 1、什么是冒泡排序?...

网友评论

      本文标题:冒泡排序算法(JavaScript实现)

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