1. 程式人生 > >冒泡排序的2種寫法

冒泡排序的2種寫法

-s 個數字 後者 temp 排序。 var 理解 比較 col

  假如有幾個數字 int score[] = {67, 69, 75, 88}; 按照從大到小排序。

  有2種思路:

  第一種思路:score[j] 和 score[j+1] 比較,如果前者比後者小,把前者和後者調換順序,兩兩調換後一輪下來,最小的會被排到最後去。

  每一輪j都從0開始,當i輪排序,就有最後面的i個數字因為他是最小的,所以後面的每輪都不用理他了,也就是 score.length-1-i 往後的數不用管了,如上,第一輪有4個數字 i為0 ,那麽score.length-1-i 為3,也就是下標是3以後的可以不用管,3往後沒有數字,所以第一輪所有的數字都要參加比較,第二輪i=1,score.length-1-i 為2 也就是說 下標2後面的 下標為3的數字不用比了,因為兩兩比較厚,67會到 score[3],實現代碼如下:

var a = [2,3,4,5,9,8,6];
function sort(a){
    var len = a.length - 1,
        temp;
    for(var i = 0; i < len; i++){
        for(var j = 0; j < len - i; j++){
            if(a[j] < a[j+1]){
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
}
sort(a);

  第二種思路:用 88 和 75 比較,再和69比較,再和 67 比較,發現88是最大的,把他排到第一位;然後 i=1,也就是第二輪,就不用看下標為 0 的 88 了,因為他是老大,然後接著比較。實現代碼如下:

var a = [1,2,3,4,5,6,9,8,6];
function sort(a){
    for(var i=0,len1 = a.length - 1;i<len1;i++){
        for(var j = a.length - 2;j>=i;j--){
            if(a[j]<a[j+1]){
                
var temp = a[j]; a[j] = a[j+1]; a[j+1]=temp; } } } return a; } sort(a)

  要理解j = a.length - 2 和 j >= i。

冒泡排序的2種寫法