解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。

   2.第一轮的时候最后一个元素应该是最大的一个。

   3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。

function bubbleSort(arr) { 

  var len = arr.length; //获得数组长度

  if(len<=1){//如果数组长度小于等于1则直接返回数组

    return arr;

  }
  for (var i = 0; i < len; i++) { //第一个for循环遍历数组中每个元素
    for (var j = 0; j < len - 1 - i; j++) { //第二个for遍历排出最大的放在最后
      if (arr[j] > arr[j+1]) { // 相邻元素两两对比
      var temp = arr[j+1]; // 元素交换
      arr[j+1] = arr[j];
      arr[j] = temp;
      }
    }
  }
  return arr;//返回数组
}

时间复杂度:最优O(n);最差O(n^2);平均O(n^2);

空间复杂度:O(1);

最新文章

  1. java版模拟浏览器下载百度动漫图片到本地。
  2. 编写高效的js/jQuery代码 :rocket:
  3. 【笔记】select2的使用
  4. UIScrollView offset in UINavigationController
  5. C Memory Layout C语言中的内存布局
  6. CentOS6编译装载nbd模块
  7. 如何用Maven创建一个普通Java项目
  8. php判断服务器是否支持Gzip压缩功能
  9. Memcache存储大数据的问题
  10. Tools that help you scrape web data----帮助你收集web数据的工具
  11. 多线程读写共享变量时,synchronized与volatile的作用
  12. ASP.NET MVC——Controller的激活
  13. The Longest Straight(二分,离散化)
  14. socket及其相关(续篇)
  15. MySQL命令行SQL脚本的导入导出小结(数据库的备份与还原)
  16. Linux之ulimit详解(整理)
  17. 第31月第15天 -fembed-bitcode
  18. JavaScript 的if语句和==的判断
  19. spark2.1源码分析2:从SparkPi分析一个job的执行
  20. 渗透测试的理论部分3——ISSAF的详细描述

热门文章

  1. Programming Series 1.0 — C Programming
  2. Unix shell范例精解 课后题
  3. Linux网络编程学习(八) ----- 文件和记录锁定(第四章)
  4. 前端面试之Javascript
  5. Redis读超时排查
  6. spring mvc 框架校验常用注解
  7. Day08 - Ruby比一比:String的+=与concat串接
  8. SQL函数总结
  9. 接口测试之——Charles抓包及常见问题解决(转载自https://www.jianshu.com/p/831c0114179f)
  10. Python学习—框架篇之初识Django