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 相关文章推荐
js 上传图片预览问题
Dec 06 Javascript
js实现一个链接打开两个链接地址的方法
May 12 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
Mar 05 Javascript
第八篇Bootstrap下拉菜单实例代码
Jun 21 Javascript
Vue监听数据对象变化源码
Mar 09 Javascript
React props和state属性的具体使用方法
Apr 12 Javascript
Angular2中监听数据更新的方法
Aug 31 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 16 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 Javascript
在vue中使用console.log无效的解决
Aug 09 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
Sep 21 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
一个数据采集类
2007/02/14 PHP
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
Python使用psutil获取进程信息的例子
2019/12/17 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
开学典礼演讲稿
2014/05/23 职场文书
财务会计岗位职责
2015/02/03 职场文书
环卫处个人工作总结
2015/03/04 职场文书
劳动仲裁调解书
2015/05/20 职场文书
教师节表彰会主持词
2015/07/06 职场文书
python flappy bird小游戏分步实现流程
2022/02/15 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技