JS排序算法之冒泡排序,选择排序与插入排序实例分析


Posted in Javascript onDecember 13, 2017

本文实例讲述了JS排序算法之冒泡排序,选择排序与插入排序。分享给大家供大家参考,具体如下:

冒泡排序: 

对数组的中的数据,依次比较相邻两数的大小。

如果前面的数据大于后面的数据,就交换这两个数。

时间复杂度O(n^2)

function bubble(array){
 var temp;
 for(var i=0; i<arr.length; i++){
  for(var j=0; j<arr.length; j++){
   if(arr[j]>arr[j+1]){
    temp = arr[j+1];
    arr[j+1] =arr[j];
    arr[j]=temp;
   }
  }console.log(arr);
 }
}//冒泡排序

选择排序:

首先从原始数组中选择一个最小的数据,和第一个位置1的数据交换。

再从剩下的n-1个数据中选择次小的数据,将其和第二个位置的数据交换。

不断重复,知道最后两个数据完成交换。

时间复杂度O(n^2)

function selectionSort(array){
 var min,temp;
 for(var i=0; i<array.length-1; i++){
  min=i;
  for(var j=i+1; j<array.length; j++){
   if(array[j]<array[min]){
    min=j;
   }
  }
  swap(array,min,i);
 }
 console.log(array);
}//选择排序
function swap(array,i,j){
 var temp =array[i];
 array[i]=array[j];
 array[j]=temp;
}//两个数字交换

插入排序:

首先对前两个数据从小到大比较。

接着将第三个数据与排好的前两个数据比较,将第三个数据插入合适的位置。以此类推。

(插入排序有两个循环,外循环将数组挨个移动,内循环将对外循环选中的元素及他前面的数进行比较。)

时间复杂度O(n^2)

function insertSort(arr){
 var temp, j;
 for(var i=1; i<arr.length; i++){
  temp =arr[i];
  j=i;
  while(j>0 && arr[j-1]>temp){
   arr[j]=arr[j-1];
   j--;
  }
  arr[j]=temp;
 }
}
Javascript 相关文章推荐
Javascript学习笔记4 Eval函数
Jan 11 Javascript
jQuery隔行变色与普通JS写法的对比
Apr 21 Javascript
javascript的push使用指南
Dec 05 Javascript
全面解析Bootstrap排版使用方法(文字样式)
Nov 30 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
Apr 10 Javascript
Javascript 严格模式use strict详解
Sep 16 Javascript
Vue实现内部组件轮播切换效果的示例代码
Apr 07 Javascript
iView-admin 动态路由问题的解决方法
Oct 03 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
关于React Native使用axios进行网络请求的方法
Aug 02 Javascript
实例分析js事件循环机制
Dec 13 #Javascript
javascript实现QQ空间相册展示源码
Dec 12 #Javascript
自定义PC微信扫码登录样式写法
Dec 12 #Javascript
基于模板引擎Jade的应用(详解)
Dec 12 #Javascript
jquery获取transform里的值实现方法
Dec 12 #jQuery
JS排序算法之希尔排序与快速排序实现方法
Dec 12 #Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 #Javascript
You might like
Javascript 事件流和事件绑定
2009/07/16 Javascript
详细讲解JS节点知识
2010/01/31 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
python 字典中取值的两种方法小结
2018/08/02 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Python networkx包的实现
2020/02/14 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
大专生自荐信
2013/10/04 职场文书
护理学中专毕业生求职信
2013/11/11 职场文书
建筑行业的大学生自我评价
2013/12/08 职场文书
经销商培训邀请函
2014/01/21 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
公益活动邀请函
2014/02/05 职场文书
工程项目建议书范文
2014/03/12 职场文书
动物科学专业求职信
2014/07/27 职场文书
社区创先争优承诺书
2014/08/30 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python
Python进行区间取值案例讲解
2021/08/02 Python
Oracle 死锁的检测查询及处理
2021/09/25 Oracle
python实现会员管理系统
2022/03/18 Python
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers