排序算法——冒泡排序
2015-10-11 14:38
429 查看
思路
① 遍历数组arr,对所有相邻的数字进行比较,若后边的数字大于前边的,则交换位置② 经过第一步后,最大的数字已经冒泡在数组末尾了,就不用遍历了。对arr 索引区间在0~arr.length-1的部分重复步骤①
③ 不断重复步骤②直到区间范围为0~1,此时数组中所有数字都已经排序完毕
另外,当某一次遍历没有任何元素交换顺序时,可以认为排序已经完成
JavaScript实现
/** * 冒泡排序 * @param arr * @returns */ function bubbleSort(arr){ if(!(arr instanceof Array)) return []; if(arr.length<=1) return arr; //over用来判断排序是否已经结束,若某一次遍历完后没有发生交换,说明已经结束 var i, j,over; for(i=0;i<arr.length;i++){ var over=true; //最后一个元素就不需要再和后边的元素比较了,后边没有了,所有要-1 for(j=0;j<arr.length-i-1;j++){ if(arr[j+1]<arr[j]){ arr.splice(j,0,arr.splice(j+1,1)[0]); over=false; } } if(over){ break; } } return arr; }
相关文章推荐
- python split做简易计算器
- 【性能测试】nGrinder设置hosts
- hdu5501 The Highest Mark 贪心+动态规划
- 迁移学习(transfer learning)、多任务学习(multi-task learning)、深度学习(deep learning)概念摘抄
- autotools工具的使用
- iOS软件开发常见通过Cocoapods安装的第三方框架
- js监听 window.open 关闭事件
- STL中的模板类pair
- 最小的n个数(堆排序)
- ARM工作模式
- [C++]内存分配的概念
- JSTL中的核心标签库(EL)
- Eclipse自动生成作者、日期注释等功能设置
- 4、深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
- 第3周项目4 顺序表应用(1)
- XPath的使用
- Hashtable、HashMap、TreeMap
- web.xml 的加载过程
- jQuery插件之TreeMultiselect 多用于权限配置
- 设计模式(5)-策略模式Strategy