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调用WebService的示例
Apr 07 Javascript
js的一些常用方法小结
Jun 29 Javascript
不使用ajax实现无刷新提交表单
Dec 21 Javascript
浅谈javascript获取元素transform参数
Jul 24 Javascript
jQuery实现选项卡切换效果简单演示
Dec 09 Javascript
JQuery解析XML的方法小结
Apr 02 Javascript
jQuery+PHP+Mysql实现抽奖程序
Apr 12 jQuery
Node.js中多进程模块Cluster的介绍与使用
May 27 Javascript
浅谈super-vuex使用体验
Jun 25 Javascript
深入浅析angular和vue还有jquery的区别
Aug 13 jQuery
vue-resourc发起异步请求的方法
Feb 11 Javascript
基于js实现判断浏览器类型代码实例
Jul 17 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
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
JavaScript脚本性能的优化方法
2007/02/02 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
softmax及python实现过程解析
2019/09/30 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
结婚邀请函范文
2014/01/14 职场文书
简历里的自我评价范文
2014/02/24 职场文书
初中学生期末评语
2014/04/24 职场文书
工作检讨书500字
2014/10/19 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
留学推荐信英文范文
2015/03/26 职场文书
销售合作意向书范本
2015/05/08 职场文书
贫困生证明范文
2015/06/16 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书