冒泡排序法

关于冒泡排序法

 这种方法效率很低,实际当中并不是很推荐使用,但是可以试着去做做,主要是把逻辑搞清楚就行。

例子:

var arr=[19,2,0,8,4,7];

第一次循环:

  第一次比较:(两两比较)

    原始状态:19  ,  2  ,  0  ,  8  ,  4  ,  7

    19>2(交换)

    交换后:  2  ,  19  ,  0  ,  8  ,  4  ,  7

  第二次比较:(两两比较)

    原始状态:2  ,  19  ,  0  ,  8  ,  4  ,  7

    19>0(交换)

    交换后:  2  ,  0  ,  19  ,  8  ,  4  ,  7

  第三次比较:(两两比较)

    原始状态:2  ,  0  ,  19  ,  8  ,  4  ,  7

    19>8(交换)

 

    交换后:  2  ,  0  ,  8  ,  19  ,  4  ,  7

  第四次比较:(两两比较)

    原始状态:2  ,  0  ,  8  ,  19  ,  4  ,  7

    19>4(交换)

 

    交换后:  2  ,  0  ,  8  ,  4  ,  19  ,  7

  第五次比较:(两两比较)

    原始状态:2  ,  0  ,  8  ,  4  ,  19  ,  7

    19>7(交换)

 

    交换后: 2  ,  0  ,  8  ,  4  ,  7  ,  19

 

第二次循环:

  第一次比较:(两两比较)

    原始状态:2  ,  0  ,  8  ,  4  ,  7  ,  19

    2>0(交换)

    交换后:  0  ,  2  ,  8  ,  4  ,  7  ,  19

  第二次比较:(两两比较)

    原始状态:0  ,  2  ,  8  ,  4  ,  7  ,  19

    2<8(不交换)

    交换后:  0  ,  2  ,  8  ,  4  ,  7  ,  19

  第三次比较:(两两比较)

    原始状态:0  ,  2  ,  8  ,  4  ,  7  ,  19

     8>4(交换)

    交换后:  0  ,  2  ,  4  ,  8  ,  7  ,  19

  第四次比较:(两两比较)

    原始状态:0  ,  2  ,  4  ,  8  ,  7  ,  19

    8>7(交换)

    交换后:  0  ,  2  ,  4  ,  7  ,  8  ,  19

  第五次比较:(两两比较)

    原始状态:0  ,  2  ,  4  ,  7  ,  8  ,  19

    8<19(不交换)

    交换后: 0  ,  2  ,  4  ,  7  ,  8  ,  19

这个时候已经按照从小到大排列好了,但是!,程序还是会继续对比下去(因为已经排列好了,所以后面的循环对比的时候不会再交换数字的位置),直到循环结束!

第三次循环------第四次循环-------第五次循环。。。。。。

所以最后的结果就是

var arr = [0, 2, 4, 7, 8, 19]

  完整代码如下:

var arr = [19,2,0,8,4,7]; 

for (var i=1; i<=arr.length-1; i++) {
  for
(var j=0; j<=arr.length-i; j++) {
    if (arr[j] > arr[j+1]) {//从小到大排序(如果要从大到小排序:arr[j] < arr[j+1])
      var temp = arr[j];
      arr[j]
= arr[j+1];
      arr[j
+1] = temp;
     }
  }
}
console.log(arr);

这里是国外编的一个冒泡排序的舞蹈,不懂的可以去看看,看完之后应该就会知道冒泡排序的原理了。

http://v.youku.com/v_show/id_XMzMyOTAyMzQ0.html

 

 

欢迎指出不足的地方!

posted on 2017-07-07 14:59  晚睡的菜鸟  阅读(123)  评论(0)    收藏  举报