1. 程式人生 > >java 冒泡排序 經典算法題

java 冒泡排序 經典算法題

break [] 如果 java 滿足 clas style 原創 --

// 冒泡排序:經典算法題。
// 有一組數字 2,10,8,20,11,把這組數按照從大到小的順序排列出來。20,11,10,8,2
// 2,10,8,20,11
// 找出最大的數,放到第一位(1,2,3,4,5)
// 20,10,8,2,11
// 從剩下的4個數中,找最大的(2,3,4,5)
// 20,11,8,2,10
// 從剩下的3個數中,找最大的(3,4,5)
// 20,11,10,2,8
// 從剩下的2個數中,找最大的(4,5)
// 20,11,10,8,2

上面是老師給的步驟,我沒仔細看 先自己想了想

int[] a = {2,10,8,20,11};        
        boolean panDuan = true;
        int num = 0;

        System.out.println("輸出原數組:");        //輸出原數組
        for (int i : a) {
            System.out.print(i+" ");
        }
        System.out.println();
        while(panDuan)                       //最外層循環 設置成死循環,只有當內層循環判定條件滿足後才跳出循環 
{ for(int i = 0 ; i<4 ;i++) //i為 數組下標,因為4是最後一位,如果前面運行正常,是不需要再比較的.所以範圍設置為i<4就可以了 { for(int j = 4 ; j>=0 ;j--) // j同為數組下標,數組下標為i的元素,與數組中的元素,以倒序的順序依次比較. { if(i == j || i > j) //當i = j 或者 i>j時,如果前面運行正確,是不需要再比較的 ,並且不繼續運行下去,所以跳出變量為j的循環,繼續執行變量為i的循環
{ break ; }else if(a[i]<a[j]) //當滿足條件,交換兩個元素的位置 { a[i] = a[i]+a[j]; a[j] = a[i] - a[j]; a[i] = a[i] - a[j]; } } } for(int k = 0 ; k <4 ; k++) //檢測循環 用來判斷 現在的數組是否達到條件 { for(int l = 4 ;l >= 0 ; l--) { if(k == l || k > l) { break ; }else if(a[k]>a[l]) //判斷大小 { num++; //如果條件正確,num+1 } } } if(num == 10) //如果條件都正確,那麽num應該加10次,所以 當num=10,將布爾值的panDuan值改成false,就可以跳出while循環. { panDuan = false; } num = 0; //如果一次循環達到想要的數組,將num歸0,繼續循環直到正確. } //while 結束括號 System.out.println("輸出排序後數組:"); for (int m : a) { System.out.print(m+" "); } } }

(初學java,博客記錄為主,輕噴,錯誤想必不少,如果您能指出,不勝感激,部分內容非原創,來源於百度)

java 冒泡排序 經典算法題