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获取dom的下一个节点方法
Sep 05 Javascript
JavaScript里四舍五入函数round用法实例
Apr 06 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 Javascript
js验证框架之RealyEasy验证详解
Jun 08 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
Aug 25 Javascript
原生js代码实现图片放大境效果
Oct 30 Javascript
jquery点击展示与隐藏更多内容
Dec 03 Javascript
angular分页指令操作
Jan 09 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 Javascript
layui中layer前端组件实现图片显示功能的方法分析
Oct 13 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
Jan 27 Javascript
原生JS实现微信通讯录
Jun 18 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
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
JavaScript 图像动画的小demo
2012/05/23 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
python实现归并排序算法
2018/11/22 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
英国健身超市:Fitness Superstore
2019/06/17 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
英文版餐饮运营管理求职信
2013/11/06 职场文书
大学自我鉴定
2013/12/20 职场文书
关于美容院的活动方案
2014/08/14 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
高三英语教学反思
2016/03/03 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js