js中常見的數組排序算法-冒泡排序和選擇排序


reverse( )  數組逆序
 
// reverse() 數組逆序
var arr = ["邊境牧羊犬", "德國牧羊犬", "金毛", "貴賓犬", "柯基犬"];
arr.reverse();
alert(arr);
//柯基犬,貴賓犬,金毛,德國牧羊犬,邊境牧羊犬

 

 
reverse 直接修改原數組。
 
 
 
 
                sort()  排序
                按照字符串排序。
 
var arr = [5, 4, 1, 2, 3];
var arr = [1, 20, 15, 10, 2];
arr.sort();
alert(arr); //1,10,15,2,20 按字符串排序(ASCLL碼)還是從右往左比

 

/*
【注】排序,盡量自己去封裝排序的方法,不要用官方給定的方法。
冒泡排序
選擇排序
*/
 
 
 
排序算法:
 
 
1、冒泡排序
             // var arr = [9, 8, 7, 6, 5, 4];
            /*
                將上述數組,從小到大進行排序。
                
                冒泡排序規則:前后兩兩進行比較,如果符合比較的條件,就交換兩個數的位置,直到所有的數據,都符合從小到大條件,結束排序。
 
                規律:每一輪比較,都會找出一個較大的數,放在正確的位置。
    
            第一輪:
                9, 8, 7, 6, 5, 4
                8, 9, 7, 6, 5, 4
                8, 7, 9, 6, 5, 4
                8, 7, 6, 9, 5, 4
                8, 7, 6, 5, 9, 4
                8, 7, 6, 5, 4, 9
 
            第二輪:
                8, 7, 6, 5, 4
                7, 8, 6, 5, 4
                7, 6, 8, 5, 4
                7, 6, 5, 8, 4
                7, 6, 5, 4, 8
 
            第三輪:
                7, 6, 5, 4
                6, 7, 5, 4
                6, 5, 7, 4
                6, 5, 4, 7
 
            第四輪:
                6, 5, 4
                5, 6, 4
                5, 4, 6
            第五輪:
                5, 4
                4, 5
                        
            總結:
               比較的輪數 = 數組長度 - 1;
                每一輪比較的次數 = 數組長度 - 當前輪數
 
根據總結寫代碼:
 
 1 //決定比較幾輪
 2 for(var i = 0; i < arr.length - 1; i++){
 3     //決定每一輪比較多少次
 4     for(var j = 0; j < arr.length - i - 1; j++){
 5         if(arr[j] > arr[j + 1]){
 6             var tmp = arr[j];
 7             arr[j] = arr[j + 1];
 8             arr[j + 1] = tmp;
 9         }
10     }
11 }
12  
13  alert(arr);//4,5,6,7,8,9
我們在用的時候可以你把這段代碼封裝成函數,這樣以后直接通過script標簽的src屬性調用,就可以了。像下面這樣
 1 function BubbleSort(arr){
 2     for(var i = 0; i < arr.length - 1; i++){
 3         //決定每一輪比較多少次
 4         for(var j = 0; j < arr.length - i - 1; j++){
 5             if(arr[j] > arr[j + 1]){
 6                 var tmp = arr[j];
 7                 arr[j] = arr[j + 1];
 8                 arr[j + 1] = tmp;
 9             }
10         }
11     }
12 }

 

調用: 
 
1 <script src= "封裝冒泡函數的js文件名"></script>
2 <script>
3     var arr = [9, 8, 7, 6, 5, 4];
4     alert(arr);//9,8,7,6,5,4
5     BubbleSort(arr);//調用冒泡排序函數
6  
7     alert(arr);
8     //4,5,6,7,8,9
9 </script>

 

-------------------------------------------------
選擇排序(打雷台法):
            
                選擇排序/打擂台法:
                規律:通過比較首先選出最小的數放在第一個位置上,然后在其余的數中選出次小數放在第二個位置上,依此類推,直到所有的數成為有序序列。
 
            
            
 
            
            第一輪:
                9, 8, 7, 6, 5, 4
                8, 9, 7, 6, 5, 4
                7, 9, 8, 6, 5, 4
                6, 9, 8, 7, 5, 4
                5, 9, 8, 7, 6, 4
                4, 9, 8, 7, 6, 5
                一號位 比較出最小的數為4
 
            第二輪:
                   9, 8, 7, 6, 5
                   8, 9, 7, 6, 5
                   7, 9, 8, 6, 5
                   6, 9, 8, 7, 5
                   5, 9, 8, 7, 6
                   二號位 比較出最小的數為5
 
            第三輪:
                      9, 8, 7, 6
                      8, 9, 7, 6
                      7, 9, 8, 6
                      6, 9, 8, 7
                       三號位 比較出最小的數為6
            第四輪:
                         9, 8, 7
                         8, 9, 7
                         7, 9, 8
                         四號位 比較出最小的數為7
            第五輪:
                             8, 9
                             四號位 比較出最小的數為8
 
            總結:
            比較的輪數  =  數組長度  - 1
            每一輪比較次數 = 數組長度 - 當前輪次
 
 
根據總結寫代碼:
 1 var arr = [9, 8, 7, 6, 5, 4];
 2 //用選擇排序的方法從小到大排列數組元素。
 3  
 4 //比較的輪數
 5     for(var i = 0; i < arr.length - 1; i++){
 6     //每輪比較的次數
 7         for(var j = i + 1; j < arr.length; j++){
 8             if(arr[i] > arr[j]){
 9                 var tmp = arr[i];
10                 arr[i] = arr[j];
11                 arr[j] = tmp;
12             }
13         }
14      }
15  
16 alert(arr);//4,5,6,7,8,9

 

 我們在用的時候可以你把這段代碼封裝成函數,這樣以后直接通過script標簽的src屬性調用,就可以了。像下面這樣
 
function changeSort(arr){
    for(var i = 0; i < arr.length - 1; i++){
        //次數
        for(var j = i + 1; j < arr.length; j++){
            if(arr[i] > arr[j]){
                var tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}

 

 調用:
1 <script src= "封裝選擇排序函數的js文件名"></script>
2 <script>
3     var arr = [9, 8, 7, 6, 5, 4];
4     alert(arr);//9,8,7,6,5,4
5     changeSort(arr);//調用冒泡排序函數
6  
7     alert(arr);
8     //4,5,6,7,8,9
9 </script>

以上就是關於數組排序中的 冒泡排序和選擇排序的講解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM