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 相关文章推荐
执行iframe中的javascript方法
Oct 07 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 Javascript
关于Javascript 对象(object)的prototype
May 09 Javascript
浅谈Javascript如何实现匀速运动
Dec 19 Javascript
JavaScript数据结构与算法之集合(Set)
Jan 29 Javascript
xcode中获取js文件的路径方法(推荐)
Nov 05 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
微信小程序网络请求封装示例
Jul 24 Javascript
javascript中join方法实例讲解
Feb 21 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
Sep 17 Javascript
JavaScript交换变量常用4种方法解析
Sep 02 Javascript
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
实例分析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中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
php中Ctype函数用法详解
2014/12/09 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
Django 中 cookie的使用
2017/08/17 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
JS定时关闭窗口的实例
2013/05/22 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
服务员岗位职责
2014/01/29 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
刑事起诉书范文
2015/05/19 职场文书
教师节校长致辞
2015/07/31 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL