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 流畅动画实现原理
Sep 08 Javascript
javascript小数计算出现近似值的解决办法
Feb 06 Javascript
Javascript 面向对象(二)封装代码
May 23 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
Aug 14 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
Jan 16 Javascript
jQuery.holdReady()使用方法
May 20 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
Sep 08 Javascript
ES6入门教程之let和const命令详解
May 17 Javascript
集合Bootstrap自定义confirm提示效果
Sep 19 Javascript
VueJs监听window.resize方法示例
Jan 17 Javascript
详解JWT token心得与使用实例
Aug 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
微信开发之获取JSAPI TICKET
2017/07/07 PHP
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
岗位职责定义及内容
2013/11/08 职场文书
会计自荐书
2013/12/02 职场文书
出国导师推荐信
2014/01/16 职场文书
运动会广播稿50字
2014/01/26 职场文书
迟到早退检讨书
2014/02/10 职场文书
廉洁校园实施方案
2014/05/25 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
文明礼仪倡议书
2015/04/28 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL