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 相关文章推荐
动态调用CSS文件的JS代码
Jul 29 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
Aug 18 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 Javascript
js弹出确认是否删除对话框
Mar 27 Javascript
js 动态修改css文件的方法
Aug 05 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
使用jQuery在对象中缓存选择器的简单方法
Jun 30 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
Jun 04 Javascript
浅谈VUE监听窗口变化事件的问题
Feb 24 Javascript
swiper4实现移动端导航切换
Oct 16 Javascript
vue+element 实现商城主题开发的示例代码
Mar 26 Javascript
vue下载二进制流图片操作
Oct 26 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者的疑难问答(1)
2006/10/09 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
PHP PDO函数库详解
2010/04/27 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
php常用数组函数实例小结
2016/12/29 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
17个Python小技巧分享
2015/01/23 Python
python随机生成指定长度密码的方法
2015/04/04 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
python如何设置静态变量
2020/09/07 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
十佳护士获奖感言
2014/02/18 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
部队个人年终总结
2015/03/02 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书