数组冒泡排序算法(升序)

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

第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冒泡排序的更多相关文章

  1. javascript 冒泡排序算法

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  2. javascript冒泡排序 至少比较N(N-1)/2次;

    <script type="text/javascript"> function get(){ var num = [10,5,2,1,3,6,4,7,9,8]; va ...

  3. javascript冒泡排序一些新实现

    一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放在前面: 如 var arr = [7, 3, 10, 1, 8, 4, 2 ...

  4. JavaScript冒泡排序法实现排序操作

    var arr = [10,8,6,9,1,7,1,13,5,1,9]; //冒泡排序 function bubbleSort(tmpArr){ for(var i = tmpArr.length-1 ...

  5. JavaScript 冒泡排序和选择排序

    var array = [1,2,3,4,5]; // ---> 服务 //效率 ---> 针对一个有序的数组 效率最高 //标志 true false for(var j = 0; j ...

  6. 唤醒你的大脑 --- javascript冒泡排序

    var a; a = [1, 2, 3, 11, 55, 5, 0, 44]; (function bubbleSort() { for (var i = 0; i <= a.length - ...

  7. 浅析JavaScript事件流——冒泡

    一.什么是事件冒泡流 我们知道事件流指的是从页面中接受事件的顺序. 为了形象理解事件冒泡,可以想象三军主将诸葛亮,在帐内运筹帷幄,眼观六路耳听八方,这时候前方的战事情况就需要靠传令兵来传达,当第一位传 ...

  8. javascript算法汇总(持续更新中)

    1. 线性查找 <!doctype html> <html lang="en"> <head> <meta charset="U ...

  9. 几大排序思想(由javascript编写)

    Hello!我是super喵二~~~今天练了几道面试题,突然觉得好久没有好好归纳 过排序算法了.以前都是用C/java编写排序,这次用js来总结下五大排序算法吧: 1.冒泡排序(常用及常考排序算法): ...

随机推荐

  1. iOS7 NavigationController 手势问题

    在iOS7中,如果使用了UINavigationController,那么系统自带的附加了一个从屏幕左边缘开始滑动可以实现pop的手势.但是,如果自定义了navigationItem的leftBarB ...

  2. RTP与RTCP协议介绍(转载)

    RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...

  3. Linux Socket 网络编程

    Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...

  4. linux用户权限相关内容查看

    linux用户权限相关内容查看 1   用户信息 创建用户一个名为 webuser 的账号,并填写相应的信息: root@iZ94fabhqhuZ:~# adduser webuser Adding ...

  5. MySQL基础之视图

    关于视图 视图是虚表,其中并不存在数据,只是多个表的组成 使用视图的优势 视图可以代替复杂的查询SQL语句,可以事先将不同表的多个数据组织起来 提高权限控制管理,能够将权限限制为行级管理,更具有安全性 ...

  6. 日期格式 CST

    从es 取出来一个date 字段, 结果竟然是 2016-10-10T10:48:58.000Z 这样的字符串, 这个是什么格式啊??? CST ? 只能自己转换了! 通过"yyyy-MM- ...

  7. Java常量的应用

    所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变. 语法:final 常量名 = 值; 使用fianl关键字 常量名 值 final String a1 = &qu ...

  8. 【Win 10应用开发】提供建议列表的输入控件(AutoSuggestBox)

    AutoSuggestBox控件与TextBox控件相似,但,AutoSuggestBox控件可以提供一个下拉列表,用户可以从弹出的下拉列表中选择一个项,并把被选项的内容显示在输入框上.就类似于搜索引 ...

  9. 关于for循环中,定义的i的作用域的问题。

    for(var i=0;i<2;i++){ console.log(i) } console.log(i) 经过测试:在IE9+,谷歌,火狐中.都出现了0,1,2三个值. 所以其作用域在整个上下 ...

  10. 软件工程的引入:Scrum开发框架总结

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点如下: 软件工程概念 敏捷开发过程scrum 一.什么是软件工程?请用一句话描述. 软件工程是一门研究性的学科:它用工程化 ...