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 相关文章推荐
学习ExtJS border布局
Oct 08 Javascript
JavaScript中检测变量是否存在遇到的一些问题
Nov 11 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
Jquery中扩展方法extend使用技巧
Aug 24 Javascript
JavaScript中的关联数组问题
Mar 04 Javascript
javascript学习小结之prototype
Dec 03 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
vue中简单弹框dialog的实现方法
Feb 26 Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
微信小程序云开发实现云数据库读写权限
May 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
常用jQuery代码分享
2015/07/14 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
简单谈谈Javascript函数中的arguments
2017/02/09 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
跟老齐学Python之一个免费的实验室
2014/09/14 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
python实现简单中文词频统计示例
2017/11/08 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
前台文员我鉴定
2014/01/12 职场文书
班级安全教育实施方案
2014/02/23 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
安全生产奖惩制度
2015/08/06 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
浅析JavaScript中的变量提升
2022/06/01 Javascript