码迷,mamicode.com
首页 > 编程语言 > 详细

javascript冒泡排序

时间:2016-12-31 13:31:30      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:最大   查找   var   img   数组   模拟   strong   rip   ima   

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

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

        

第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冒泡排序

标签:最大   查找   var   img   数组   模拟   strong   rip   ima   

原文地址:http://www.cnblogs.com/groverd/p/6239036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!