冒泡排序法
关于冒泡排序法
这种方法效率很低,实际当中并不是很推荐使用,但是可以试着去做做,主要是把逻辑搞清楚就行。
例子:
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
欢迎指出不足的地方!
浙公网安备 33010602011771号