javascript冒泡排序
数组冒泡排序算法(升序)
升序:小数在前,大数在后 冒泡排序的原则:每次比较相邻两个元素,如果前一个数>后一个数,说明违反升序的要求,就将两数交换位置。否则,保持不变。继续比较下一对。 例如:玩扑克牌时整理手中的排就是一种排序。就可以用冒泡排序模拟。
第1轮比较:

比较第1个和第2个元素:9 : 7,违反升序原则,交换,变为7:9
比较第2个和第3个元素:9:4,违反升序原则,交换,变为4:9
比较第3个和第4个元素:9:8,违反升序原则,交换,变为8:9
比较第4个和第5个元素:9:6,违反升序原则,交换,变为6:9
比较第5个和第6个元素:9:10,不违反升序原则,不交换,依然为9:10
比较第6个和第7个元素:10:5,违反升序原则,交换,变为5:10 结果,
经过比较6次后,将所有元素中的最大值“10”,交换到了最后一个元素
继续实现除最后一个元素外,剩余元素的最大值,交换到倒数第二个元素中。
第2轮比较
比较第1个和第2个元素:7 : 4,违反升序原则,交换,变为4:7
比较第2个和第3个元素:7:8,不违反升序原则,不交换,依然为7:8
比较第3个和第4个元素:8:6,违反升序原则,交换,变为6:8
比较第4个和第5个元素:8:9,不违反升序原则,不交换,依然为8:9
比较第5个和第6个元素:9:5,违反升序原则,交换,变为5:9 最后一个元素10,不再比较!
结果,经过5次比较,将除10外,其余6个元素中的最大值“9”,交换到最后一个元素
每轮查找最大值的规律:
第1轮,要比较6次,循环条件为i<cards.length-1,6其实是数组个数(7)-1
第2轮,要比较5次,循环条件为i<cards.length-2, 5其实是数组元素个数(7)-2
...
第n轮,要比较数组元素个数-n次,循环条件为i<cards.length-n 实现:
外层循环的规律:
每轮查找都执行相同的“X代码段”:
for(var i=0;i<cards.length-n;i++)
{
if(cards[i]>cards[i+1]){
var temp=cards[i];
cards[i]=cards[i+1];
cards[i+1]=temp;
}
}
外层循环三要素:
1. 循环变量n:循环次数计数器,var n=1,从第一次开始
2. 循环条件:第一轮比较,比较次数=元素个数-1;第n轮比较,比较次数=元素个数-n。直到要比较的次数=0时,说明不必继续比较了,所以:外层循环的条件为:cards.length-n>0
javascript冒泡排序的更多相关文章
- javascript 冒泡排序算法
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- javascript冒泡排序 至少比较N(N-1)/2次;
<script type="text/javascript"> function get(){ var num = [10,5,2,1,3,6,4,7,9,8]; va ...
- javascript冒泡排序一些新实现
一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放在前面: 如 var arr = [7, 3, 10, 1, 8, 4, 2 ...
- JavaScript冒泡排序法实现排序操作
var arr = [10,8,6,9,1,7,1,13,5,1,9]; //冒泡排序 function bubbleSort(tmpArr){ for(var i = tmpArr.length-1 ...
- JavaScript 冒泡排序和选择排序
var array = [1,2,3,4,5]; // ---> 服务 //效率 ---> 针对一个有序的数组 效率最高 //标志 true false for(var j = 0; j ...
- 唤醒你的大脑 --- javascript冒泡排序
var a; a = [1, 2, 3, 11, 55, 5, 0, 44]; (function bubbleSort() { for (var i = 0; i <= a.length - ...
- 浅析JavaScript事件流——冒泡
一.什么是事件冒泡流 我们知道事件流指的是从页面中接受事件的顺序. 为了形象理解事件冒泡,可以想象三军主将诸葛亮,在帐内运筹帷幄,眼观六路耳听八方,这时候前方的战事情况就需要靠传令兵来传达,当第一位传 ...
- javascript算法汇总(持续更新中)
1. 线性查找 <!doctype html> <html lang="en"> <head> <meta charset="U ...
- 几大排序思想(由javascript编写)
Hello!我是super喵二~~~今天练了几道面试题,突然觉得好久没有好好归纳 过排序算法了.以前都是用C/java编写排序,这次用js来总结下五大排序算法吧: 1.冒泡排序(常用及常考排序算法): ...
随机推荐
- Linux课堂笔记(一)
一.Linux应用领域及版本介绍. 1.服务器.嵌入式.桌面应用等. (1)在服务器领域中,需要安全和稳定,特别是越老的内核版本越安全.越稳定. (2)Linux主要分内核版和发行版. 内核版本2.6 ...
- 乐乎环球WiFi
乐乎环球WiFi招商加盟 随身WiFi设备 乐乎环球Wifi是由北京蔚蓝创智科技有限公司研发的产品,是一款可以在全球100多个国家和地区实现免漫游4G高速上网的随身WiFi设备.和普通MiFi设备相比 ...
- PADS Layout 颜色设置
一.板框.装配线.标注线配置: 二.个人爱好,我一般把Top pads设置成为浅绿色,Top Trace/vias/2D Line/Text/Cooper设置成为深绿色,Error设置成为黄色,而Bo ...
- 【每日一linux命令1】linux命令路径
一.路径: 执行命令前必须要考虑的一步是命令的路径,若是路径错误或是没有正确的指定,可能导致错误 的执行或是找不到该命令.要知道设置的路径,可执行以下命令: echo $PATH 显示结果: 这时我们 ...
- 曲演杂坛--蛋疼的ROW_NUMBER函数
使用ROW_NUMBER来分页几乎是家喻户晓的东东了,而且这东西简单易用,简直就是程序员居家必备之杀器,然而ROW_NUMBER也不是一招吃遍天下鲜的无敌BUG般存在,最近就遇到几个小问题,拿出来供大 ...
- Leetcode 笔记 100 - Same Tree
题目链接:Same Tree | LeetCode OJ Given two binary trees, write a function to check if they are equal or ...
- 基于Adobe Flash平台的3D页游技术剖析
写在前面 从黑暗之光,佛本是道,大战神的有插件3D页游.再到如今的魔龙之戒. 足以证明,3D无插件正在引领页游技术的潮流. 目前,要做到3D引擎,有以下几个选择. 说到这里,我们发现.这些都不重要. ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Pr ...
- 构建Web API服务
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 构建动态Web API控制器 ABP可以自动地为应用层生成Web API 层.比如说我们之前创建的应用层: namespace N ...