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 相关文章推荐
jQuery 学习6 操纵元素显示效果的函数
Feb 07 Javascript
html页面显示年月日时分秒和星期几的两种方式
Aug 20 Javascript
实例代码讲解jquery easyui动态tab页
Nov 17 Javascript
JS实现列表的响应式排版(推荐)
Sep 01 Javascript
Vue.js实现简单动态数据处理
Feb 13 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
Jul 27 Javascript
js运算符的一些特殊用法
Jul 29 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 Javascript
详解JavaScript的数据类型以及数据类型的转换
Apr 20 Javascript
vue实现鼠标移过出现下拉二级菜单功能
Dec 12 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
Jul 11 Javascript
输入框跟随文字内容适配宽实现示例
Aug 14 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
1.PHP简介
2006/10/09 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
php动态变量定义及使用
2015/06/10 PHP
laravel自定义分页效果
2017/07/23 PHP
javascript alert乱码的解决方法
2013/11/05 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
Bootstrap表单布局
2016/07/19 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
python实现各种插值法(数值分析)
2019/07/30 Python
python多线程分块读取文件
2019/08/29 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
Python中SQLite如何使用
2020/05/27 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
人事部专员岗位职责
2014/03/04 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
质检员工作总结2015
2015/04/25 职场文书
城南旧事读书笔记
2015/06/29 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
开学第一天的感想
2015/08/10 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书