javascript中的冒泡排序
冒泡排序:就是将一个数组中的元素按照从大到小或者从小到大的顺序进行排列。
var array=[9,8,7,6,5,4,3,2,1];
第一轮比较:8,7,6,5,4,3,2,1,9 交换了8次 i=0 j=array.length-1-i
第二轮比较:7,6,5,4,3,2,1,8,9 交换了7次 i=1 j=array.length-1-i
第三轮比较:6,5,4,3,2,1,7,8,9 交换了6次 i=2 j=array.length-1-i
第四轮比较:5,4,3,2,1,6,7,8,9 交换了5次 i=3 j=array.length-1-i
第五轮比较:4,3,2,1,5,6,7,8,9 交换了4次 i=4 j=array.length-1-i
第六轮比较:3,2,1,4,5,6,7,8,9 交换了3次 i=5 j=array.length-1-i
第七轮比较:2,1,3,4,5,6,7,8,9 交换了2次 i=6 j=array.length-1-i
第八轮比较:1,2,3,4,5,6,7,8,9 交换了1次 i=7 j=array.length-1-i
代码实现:
var temp;
var array=[9,8,7,6,5,4,3,2,1];
//外循环控制轮数
for(var i=0;i<array.length-1;i++){
//内循环控制比较次数
for(var j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
//交换两个变量
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
console.log(array);
代码优化:
var temp,bool,m=0;
var array=[9,8,7,6,5,4,3,2,1];
for(var i=0;i<array.length-1;i++){
//开闭原则中的开关
bool = true;
for(var j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
//交换两个变量
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
bool=false;//将开关关闭
}
}
//如果内循环中的if没有被执行(开关关闭,执行下面的语句);
if(bool){
break;
}
m++;
}
console.log(array+",比较"+m+"轮");
备注:比较轮数最好情况为0轮,最坏为8轮
javascript中的冒泡排序的更多相关文章
- Javascript中的冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序 算法性能分析
阿里面试中有一道题是这样的: 请用JavaScript语言实现 sort 排序函数,要求:sort([5, 100, 6, 3, -12]) // 返回 [-12, 3, 5, 6, 100],如果你 ...
- Javascript中,实现十大排序方法之一(冒泡排序及其优化设想)
冒泡排序的Javascript实现 首先定义一个取值范围在(0~100000)之间的随机值的长度为10万的数组, function bubbleSort(arr) { console.time('冒泡 ...
- js中的冒泡排序以及实现一个数组中得最到最大的数字小例
这其实是一个很简单的js就可以实现,当然一般情况就是利用for循环,从第一个跟第二个开始比较,根据大小交互位置,思路很简单. 也就是js中的冒泡排序 冒泡排序 时间复杂度为O(n^2),有两个优点: ...
- javascript中的sort()方法
现在在学习javascript中,发现sort()函数是有点奇怪的东西(可能是本人水平的问题-_-!),于是就在这里记录一下自己找到的东西吧.sort()这个方法的参数很奇怪,必须是函数,但也是可选参 ...
- JavaScript中简单排序总结
JavaScript中简单排序总结 冒泡排序 经典排序算法, 双重for循环 在第二个for循环的时候, j < arr.len -1 -i , 这一步的优化很重要 function bullS ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- javascript中的this与函数讲解
前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- javascript中的操作符详解1
好久没有写点什么了,根据博主的技术,仍然写一点javascript新手入门文章,接下来我们一起来探讨javascript的操作符. 一.前言 javascript中有许多操作符,但是许多初学者并不理解 ...
随机推荐
- 第5章 软件包管理(1)_RPM包安装
1. 软件包简介 1.1 软件包分类 (1)源码包:如C.C++源码包,脚本安装包执行后可以自动安装. (2)二进制包:Redhat系列(如CentOS):为RPM包,Debian系列(如ubuntu ...
- 使用Struts2实现数据校验
使用Struts2实现数据校验 为什么需要数据校验呢?答案很简单,假如当你登录想要京东,这时就需要数据校验了如果不输入用户名的话,那么就不会登陆成功,并且会提示出"请输入用户名"的 ...
- [No000084]C# 使用Log4Net(1)-快速建立一个demo
1.下载Log4Net: http://logging.apache.org/log4net/download_log4net.cgi 2.新建一个WinForm程序,取名Log4NetDemo 3. ...
- CWMP开源代码研究4——认证流程
TR069 Http Digest 认证流程 一 流程及流程图 1.1盒端主动发起Http Digest认证流程 盒端CPE ...
- Swift中的willSet与didSet
Swift中的willSet与didSet 周银辉 在Swift语言中用了willSet和didSet这两个特性来监视属性的除初始化之外的属性值变化 无需说太多,看看下面的代码你就能很快明白的 imp ...
- Membership 重置密码
public ActionResult ChongZhiMiMa() { Membership.GetUser("admin").UnlockU ...
- ActiveX控件之ActiveXObject is not defined
ActiveX控件方便用户在网页中插入各种效果,但是并不是所有浏览器都支持该控件. ActiveX是微软独有的,只有基于IE内核的浏览器才能使用. 当出现如上错误,可以将通过该控件创建的对象定义为本地 ...
- greenDao:操作数据库的开源框架
greenDAO: Android ORM for your SQLite database 1. greenDao库获取 英文标题借鉴的是greendrobot官网介绍greenDao时给出的Tit ...
- C 语言学习 第一次作业总结
第一次的作业是冯老师布置的练习题,需要在pta平台上完成.我这边看不到结果,但是透过冯老师给出的截图,同学们都还是认真的去做的.同时,我这边也布置了一个持续 3 周的作业:熟悉 git 的使用.因为后 ...
- jinfo_动态调整JVM参数(无需重启)(实践)
本文演示在JVM进程运行过程中动态开启/关闭 GC输出,无需重启JVM进程 jinfo使用介绍 可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数 -flag < ...