js排序算法01——冒泡排序
在codewars上面刷题卡住刷不下去了,意识到自己算法方面的不足,准备写一些算法方面的文章,此为一。
冒泡排序是很常见简单的算法了,每次比较任何两个相邻的项,如果第一个比第二个大,则交换他们,就像气泡一样,冒泡排序因此得名。
代码实现如下:
function Bubble(arr){
if(!Array.isArray(arr)){
return false; //类型判断
}
else{
for (var i = arr.length; i > 0; i--) {
for (var j = 0; j < i; j++) {
if(arr[j]>arr[j+1]){
var exc;
exc = arr[j];
arr[j] = arr[j+1];
arr[j+1] = exc;
}
}
}
return arr;
}
}
var narr = [34,8,64,52,32,21];
Bubble(narr);
//[8, 21, 32, 34, 52, 64]
这样每次循环把所循环的数组里最大的数放在最下面。为了判断一次循环后数组是否已经是顺序,可以添加变量记录交换次数,这样可以在每次循环结束时判断交换次数,次数为0则说明当下已经是顺序了,不需要进行循环了,改进后的算法如下:
function Bubble(arr){
if(!Array.isArray(arr)){
return false; //类型判断
}
else{
for (var i = arr.length; i > 0; i--) {
var flag = 0;
for (var j = 0; j < i; j++) {
if(arr[j]>arr[j+1]){
var exc;
exc = arr[j];
arr[j] = arr[j+1];
arr[j+1] = exc; //交换位置
flag ++ ; //交换次数
}
}
if(flag===0){
break;
}
}
return arr;
}
}
最好的情况(已经是顺序)时间复杂度为O(n),最坏的情况(逆序),时间复杂度为O(n2).
js排序算法01——冒泡排序的更多相关文章
- [ 转载 ] js十大排序算法:冒泡排序
js十大排序算法:冒泡排序 http://www.cnblogs.com/beli/p/6297741.html
- 总结下js排序算法和乱序算法
其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...
- Java常见排序算法之冒泡排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- java排序算法之冒泡排序(Bubble Sort)
java排序算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数 ...
- 排序算法之冒泡排序Java实现
排序算法之冒泡排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb 选择排序:http://t.cn/hros6e 插入排序:ht ...
- js十大排序算法:冒泡排序
排序算法说明: (1)对于评述算法优劣术语的说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面:不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面: 内排序:所有排 ...
- 排序图解:js排序算法实现
之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...
- js排序算法汇总
JS家的排序算法 十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外 ...
- 常用的 JS 排序算法整理
关于排序算法的问题可以在网上搜到一大堆,但是纯 JS 版比较零散,之前面试的时候特意整理了一遍,附带排序效率比较. //1.冒泡排序 var bubbleSort = function(arr) { ...
随机推荐
- 文本文件显示 删除文本文件前n个字符
#include<iostream>#include<string.h>using namespace std;void displayContent(const char * ...
- [Windows Powershell]-学习笔记(3)
Powershell 通过函数扩展别名 在powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息,尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢? ...
- Mac下Jmeter快速安装与入门-模拟测试Post请求及设置Http头
[1]去Apache官网下载 Binaries系列的最新Jmeter.gz包 [2]下载到本地之后解压缩,进入到解压之后的目录然后,找到apache-jmeter-4.0/bin/jmeter.sh ...
- [转]madwifi无线网卡源代码阅读
转自:http://xiyong8260.blog.163.com/blog/static/66514621200892465922669/ 在我的Doctor课题研究中,基于ARF协议设计了一个改进 ...
- struct2的xml文件中result的配置(转)
一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出.在com.opensymphony.xwor ...
- jxl.jar包,应该把它放在哪个文件下
①把鼠标放到自己的工程上右键 ②点击Properties or Build Path >> Configure Build Path, 然后弹出一个窗口,click AddExternal ...
- 获取Json字符串中某个key对应的value
JSONObject jsonObj= JSONObject.fromObject(jsonStr); String value= jsonObj.getString(key);
- Ubuntu14.04+caffe+cuda7.5 环境搭建以及MNIST数据集的训练与测试
Ubuntu14.04+caffe+cuda 环境搭建以及MNIST数据集的训练与测试 一.ubuntu14.04的安装: ubuntu的安装是一件十分简单的事情,这里给出一个参考教程: http:/ ...
- Linux学习笔记之Xshell配色方案定制
点击 Xshell 面板顶部的如下按钮. 点击 Browse 按钮,弹出如下面板,选择 ANSI Colors on Black,然后点击右侧save as 按钮,命名为 zkl. 这里其实就是复 ...
- No module named _tkinter
https://www.douban.com/note/524197380/?type=like