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 分栏效果实现代码
Aug 29 Javascript
js日历功能对象
Jan 12 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
Apr 24 Javascript
几种响应式文字详解
May 19 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
Oct 08 Javascript
vue 移动端记录页面浏览位置的方法
Mar 11 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 Javascript
基于JavaScript实现简单扫雷游戏
Jan 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
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
树莓派升级python的具体步骤
2020/07/05 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
银行职员个人的工作自我评价
2014/02/15 职场文书
会计专业导师推荐信
2014/03/08 职场文书
体现团队精神的口号
2014/06/06 职场文书
情况说明书怎么写
2015/10/08 职场文书
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers
关于MySQL中explain工具的使用
2023/05/08 MySQL