Javascript中的冒泡排序
2016-06-21 10:06
274 查看
冒泡排序的原理:
比方说有五个数字54321,要按从小到大排列;首先比较前两个,就是5和4,如果第一个小于第二个,不做操作,如果第一个大于第二个,那么交换二者的位置,即变成45321,然后比较第二个和第三个,交换位置,
变成43521,然后第三个和第四个,第四个和第五个,这样一次循环下来,变成43215。
所以,一层循环的效果就是挑出最大的一个数字5,冒泡到最后面。但是还要挑出第二大,第三大的数字,等等。所以一层循环根本就不够用,必须再套一层才行。
例一:
五个数字,起码要进行四轮循环才行。至于为什么要this.length-i,是因为第一次比较五个数字,第二个只要比较前四个就行了,第五个肯定是最大的了。var array = [5, 4, 3, 2, 1]; var temp = 0; for (var i = 0; i < array.length; i++){ for (var j = 0; j < array.length - i; j++){ if (array[j] > array[j + 1]){ temp = array[j + 1]; array[j + 1] = array[j]; array[j] = temp; } } } console.log(array); //[1,2,3,4,5]
例二:
对一个后台给的二维数组排序,例如 var array = [[4,'dasd'],[5,'dasd'],[1,'dasd'],[2,'dasd'],[3,'dasd'],[13,'dasd'],[23,'dasd']]; 根据每个数组的第一个id值从小到大排序。var array = [[4,'dasd'],[5,'dasd'],[1,'dasd'],[2,'dasd'],[3,'dasd'],[13,'dasd'],[23,'dasd']]; var temp = 0; for (var i = 0; i < array.length; i++) { for (var j = 0; j < array.length - i - 1; j++) { if (array[j][0] >= array[j + 1][0]) { temp = array[j + 1]; array[j + 1] = array[j]; array[j] = temp; } } } console.log(array)
相关文章推荐
- JS保留两位小数 四舍五入函数
- JS调试必备的5个debug技巧
- Javascript中Math对象、数组方法
- 编写可复用的无缝滚动轮播图
- ArcGIS JS 学习笔记4 实现地图联动
- ArcGIS JS 学习笔记3 实现百度风格的BubblePopup
- ArcGIS JS 学习笔记2 实现仿百度的拖拽画圆
- ArcGIS JS 学习笔记1 用ArcGIS JS 实现仿百度地图的距离量测和面积量测
- js清除浏览器缓存的几种方法
- JavaScript调用OC代码调试问题、页面 4000 复杂跳转逻辑警告处理
- 纯JS前端实现分页代码
- JS的Math以及Date对象
- js数组与字符串的相互转化
- 小牛之路——提醒功能
- javascript继承(一)
- JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
- MyEclipse安装JS代码提示(Spket插件)
- JS中如何定义全局变量
- JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
- thinkphp 3.1.2 在视图JS代码中获取控制器中的数组