冒泡算法


    原理:
    
    临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换;
    
    如题:var arr = [1,2,3,4,5,6],要将数组的排列变为大到小,

    那么就需要:先将最小的数字交换到最后一位,
    
               然后再从头开始进行两两比较、交换,直到完成排序。
    
    
    第一步:1,2,3,4,5,6;

            第一趟交换:
                        第一次两两比较:1<2 ; 交换:2,1,3,4,5,6;                        
                        第二次两两比较:1<3 ; 交换:2,3,1,4,5,6;

                        第三次两两比较:1<4 ;  交换:2,3,4,1,5,6;

                        第四次两两比较:1<5 ;  交换:2,3,4,5,1,6;

                        第五次两两比较:1<5 ;  交换:2,3,4,5,6,1;

    第二步:2,3,4,5,6,1;
                                    
            第二趟交换:
                        
                        第一次两两比较:2<3 ; 交换:3,2,4,5,6,1;
                    
                        第二次两两比较:2<4 ; 交换:3,4,2,5,6,1;

                        第三次两两比较:2<5 ;  交换:3,4,5,2,6,1;

                        第四次两两比较:2<6 ;  交换:3,4,5,6,2,1;

    第三步:3,4,5,6,2,1;
                                    
            第三趟交换:
                        
                        第一次两两比较:3<4 ; 交换:4,3,5,6,2,1;
                    
                        第二次两两比较:3<5 ; 交换:4,5,3,6,2,1;

                        第三次两两比较:3<6 ;  交换:4,5,6,3,2,1;
            
    
    第四步:4,5,6,3,2,1;
                                    
            第四趟交换:
                    
                        第一次两两比较:4<5 ; 交换:5,4,6,3,2,1;

                        第二次两两比较:4<6 ;  交换:5,6,4,3,2,1;

    第五步:5,6,4,3,2,1;
                                    
            第五趟交换:

                        第一次两两比较:5<6 ;  交换:6,5,4,3,2,1;
 

    最终结果为:6,5,4,3,2,1


    var array = [1,2,3,4,5,6];
    var temp = 0;
    for (var i = 0; i < array.length; i++){
        for (var j = 0; j < array.length - i; j++){
            if (array[j] < array[j + 1]){
            temp = array[j];
            array[j] = array[j+1];
            array[j+1] = temp;
            }
        }
    }
    console.log(array);

posted @ 2016-04-25 02:07  白教主  阅读(136)  评论(0编辑  收藏  举报