冒泡排序

冒泡排序:

相鄰兩個元素進行比較,如果符合條件就換位。

例如有一個數組:{3,1,2,8,5,10,4,12}。

int[] a=new int[]{3,1,2,8,5,10,4,12};

第一輪循環:


第一輪循環,a[0] 和 a[1] 比較,a[0] > a[1] ,則交換元素,然後 a[1] 和 a[2] 比較,a[2] 和a[3] 比較,直到結束,最終 a[7] 爲最大值。

每一輪排序,最後一個數爲最大值,即第一輪冒泡結束後,a[7] = 12 。

第二輪循環:

第二輪循環,a[0] 和 a[1] 比較,a[0] <a[1] ,符合,然後 a[1] 和 a[2] 比較,a[2] 和a[3] 比較,直到結束,最終 a[6] 爲最大值。

每一輪排序,最後一個數爲最大值,即第二輪冒泡結束後,a[6] = 10 。

第三輪循環:


第三輪循環,a[0] 和 a[1] 比較,a[0] <a[1] ,符合,然後 a[1] 和 a[2] 比較,a[2] 和a[3] 比較,直到結束,最終 a[5] 爲最大值。

每一輪排序,最後一個數爲最大值,即第三輪冒泡結束後,a[5] = 8 。

最終結果:


代碼分析:

完成冒泡的函數:

    public static void BubbleSort(int[] a) {
        for(int x=0;x<a.length-1;x++) {
            for(int y=0;y<a.length-x-1;y++) {    //-x:讓每一次比較的元素數少x個。-1:防止腳標過界。
                if(a[y]>a[y+1]) {
                    int t;
                    t=a[y+1];
                    a[y+1]=a[y];
                    a[y]=t;
                }
            }
        }
    }

打印數組函數:

    public static void Print(int[] a) {
        System.out.print("[ ");
        for(int i=0;i<a.length;i++) {
            System.out.print(a[i]+" ");
        }
        System.out.println("]");
    }

main() 函數:

    public static void main(String[] args) {
        int[] a=new int[]{3,1,2,8,5,10,4,12};
        Print(a);
        BubbleSort(a);
        Print(a);
    }

最終輸出結果:



發佈了39 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章