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中有许多操作符,但是许多初学者并不理解 ...
随机推荐
- POJ1947 Rebuilding Roads[树形背包]
Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 11495 Accepted: 5276 ...
- String类的equals是如何进行字符串比较的
先看一段代码: public static void main(String[] args) { String a = new String("abc"); String b = ...
- 嵌入式Linux驱动学习之路(二十三)NAND FLASH驱动程序
NAND FLASH是一个存储芯片. 在芯片上的DATA0-DATA7上既能传输数据也能传输地址. 当ALE为高电平时传输的是地址. 当CLE为高电平时传输的是命令. 当ALE和CLE都为低电平时传输 ...
- python-面向对象进阶
小总结: 面向对象的好处 更容易扩展,提高代码的使用效率,使代码组织性更强.更清晰,更适合复杂项目的开发 封装:把功能的实现细节封装起来,之暴露调用接口 多态:接口的继承 定义: 类 : 模板 ...
- hibernate单表junit测试
首先,创建java project ,导入需要的jar包 添加hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8'?> <!D ...
- Node webkit启动最大化窗口
<!DOCTYPE html> <html> <head> </head> <body> <p style=" ...
- 脑成像数据分析:Python工具包
来源:SealHuang 脑成像技术已经成为认知科学和心理学研究领域中一种重要的研究手段,帮助研究者不断深入发掘我们脑中的秘密.伴随着研究的不断深入,各式各样的指标参数和分析方法也不断推陈出新,以迅雷 ...
- Qt——浅谈样式表
优秀的程序,不仅要有严密逻辑,而且应该有美观的外表.从软件界面,便可看出你是否用心在做,是否是一个有思想的人. Qt样式表的术语和语法规则和HTML CSS有很多相似之处. 样式规则 Qt中样式规则由 ...
- C/C++实践笔记 008
逗号运算符优先级最低逗号运算符的值是最后一个的值int a=(1,2);执行结果为2逗号运算符每一条语句都要执行,执行方向从左向右 三目运算符表达式1?表达式2:表达式3 C语言里只有0和非0的区别 ...
- ModernUI教程:创建自定义主题
Modern UI WPF包括两个内置主题(dark与light).在1.0.3版本,您可以构建自定义的主题.Modern UI应用程序通常有在全局资源字典App.xaml中有如下定义 ...