排序算法01:冒泡排序
来源:互联网 发布:加内特2004季后赛数据 编辑:程序博客网 时间:2024/06/06 20:43
算法介绍
步骤:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对第0个到第n-1个数据做同样的工作。这时,最大的数就“浮”到了数组最后的位置上。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
可视化效果:这里
Javascript实现
/** * Created by YiYing on 2017/4/22. */(function (W) { function Bubble(arr) { this.arr = arr; } /** * 冒泡排序算法实现 */ Bubble.prototype.sort = function () { var len = this.arr.length; for(var i=0;i<len;i++){ //将最大的元素不断的沉到底部 for(var j=0;j<len-i-1;j++){ if(this.less(j+1,j)){ this.exchange(j+1,j); } } } }; /** * 判断m是否小于n * @param m * @param n */ Bubble.prototype.less = function (m,n) { //可根据不同的数据类型设置比对规则,比如json。这里适用于数字与字符串。 return this.arr[m]<this.arr[n]; }; /** * 交换数组中m与n的位置 * @param m * @param n */ Bubble.prototype.exchange = function (m,n) { var swap = this.arr[m]; this.arr[m] = this.arr[n]; this.arr[n] = swap; }; /** * 打印排序后的数组 */ Bubble.prototype.show = function () { console.log(this.arr); }; /** * 判断是否已排序 * @returns {boolean} */ Bubble.prototype.isSorted = function () { var len = this.arr.length; for(var i=1;i<len;i++){ if(this.less(i,i-1)){ return false; } } return true; }; W.Bubble = Bubble;})(window);//测试代码(function () { var arr = [4,5,6,0,3,5,21,7,9,0,1]; var bubble = new Bubble(arr); console.log("排序前:"+bubble.isSorted()); bubble.sort(); console.log("排序后:"+bubble.isSorted()); bubble.show();})();
总结
- 稳定。相同元素排序后能保持排序前的相对顺序。
- 原地排序。
- 时间复杂度为:平方级别。
- 空间复杂度为:常数级别。
GitHub:https://github.com/AlbertKnag/algs-practice
下一篇:排序算法02:选择排序
0 0
- 排序算法01:冒泡排序
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法 冒泡排序
- 排序算法-- 冒泡排序
- 排序算法-冒泡排序
- 排序算法---冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法 冒泡排序
- JavaScript this 的理解
- effective java 读书笔记---第7章 方法
- [省选] [线段树] [差分数组] [BZOJ1558] [JSOI2009] 等差数列
- Linux下mysql备份
- Java学习笔记 Day04 (for循环嵌套、函数以及函数重载、数组)
- 排序算法01:冒泡排序
- springBoot发送邮件
- 【C++学习笔记】if条件分支
- 将二叉树拆成链表
- UVa 11809 Floating Point Numbers
- html 的 meta 总结,html 标签中 meta 属性使用介绍
- Codeforces Round #410 (Div. 2) Mike and gcd problem 思维
- 第十四届浙江省赛 ZOJ 3962 Seven Segment Display(数位DP)
- 排序算法02:选择排序