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对象及属性
Feb 13 Javascript
js中巧用cssText属性批量操作样式
Mar 13 Javascript
js中substring和substr的详细介绍与用法
Aug 29 Javascript
页面加载完毕后滚动条自动滚动一定位置
Feb 20 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
值得学习的bootstrap fileinput文件上传工具
Nov 08 Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
微信小程序商品详情页规格属性选择示例代码
Oct 30 Javascript
angular 表单验证器验证的同时限制输入的实现
Apr 11 Javascript
详解如何使用Node.js实现热重载页面
May 06 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递归实现层级树状展开
2016/04/01 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
利用aardio给python编写图形界面
2017/08/21 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
Python何时应该使用Lambda函数
2019/07/02 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
任意存:BOXFUL
2018/05/21 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
室内设计实习自我鉴定
2013/09/25 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
岗位工作说明书
2014/07/29 职场文书
2015年采购部工作总结
2015/04/23 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang