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

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

第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. Linux课堂笔记(一)

    一.Linux应用领域及版本介绍. 1.服务器.嵌入式.桌面应用等. (1)在服务器领域中,需要安全和稳定,特别是越老的内核版本越安全.越稳定. (2)Linux主要分内核版和发行版. 内核版本2.6 ...

  2. 乐乎环球WiFi

    乐乎环球WiFi招商加盟 随身WiFi设备 乐乎环球Wifi是由北京蔚蓝创智科技有限公司研发的产品,是一款可以在全球100多个国家和地区实现免漫游4G高速上网的随身WiFi设备.和普通MiFi设备相比 ...

  3. PADS Layout 颜色设置

    一.板框.装配线.标注线配置: 二.个人爱好,我一般把Top pads设置成为浅绿色,Top Trace/vias/2D Line/Text/Cooper设置成为深绿色,Error设置成为黄色,而Bo ...

  4. 【每日一linux命令1】linux命令路径

    一.路径: 执行命令前必须要考虑的一步是命令的路径,若是路径错误或是没有正确的指定,可能导致错误 的执行或是找不到该命令.要知道设置的路径,可执行以下命令: echo $PATH 显示结果: 这时我们 ...

  5. 曲演杂坛--蛋疼的ROW_NUMBER函数

    使用ROW_NUMBER来分页几乎是家喻户晓的东东了,而且这东西简单易用,简直就是程序员居家必备之杀器,然而ROW_NUMBER也不是一招吃遍天下鲜的无敌BUG般存在,最近就遇到几个小问题,拿出来供大 ...

  6. Leetcode 笔记 100 - Same Tree

    题目链接:Same Tree | LeetCode OJ Given two binary trees, write a function to check if they are equal or ...

  7. 基于Adobe Flash平台的3D页游技术剖析

    写在前面 从黑暗之光,佛本是道,大战神的有插件3D页游.再到如今的魔龙之戒. 足以证明,3D无插件正在引领页游技术的潮流. 目前,要做到3D引擎,有以下几个选择. 说到这里,我们发现.这些都不重要. ...

  8. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  9. ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Pr ...

  10. 构建Web API服务

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 构建动态Web API控制器 ABP可以自动地为应用层生成Web API 层.比如说我们之前创建的应用层: namespace N ...