1. 程式人生 > 其它 >氣泡排序及其優化

氣泡排序及其優化

氣泡排序

public class Demo07 {

    public static void main(String[] args) {
        int[] a = {52,32,62,42,84,26,35,47,65};
        int[] ints = sortArray(a);
        System.out.println(Arrays.toString(ints));
    }

    /*
    比較陣列中,兩個相鄰的元素,如果第一個數比第二個數大,我們就交換他們的位置每一次比較,都會產生出一個最大,或者最小的數字;
    下一輪則可以少一次排序!
    依次迴圈,直到結束!
     */
    public static  int[] sortArray(int[] arrays){
        //氣泡排序
        int temp = 0;//定義一個臨時變數
        for (int i = 0; i < arrays.length-1; i++) {//外層迴圈,判斷我們需要迴圈多少次
            for(int j = 0;j < arrays.length-1-i;j++){//內層迴圈,比較大小
                if(arrays[j+1] > arrays[j]){//應用臨時變數進行交換
                    temp = arrays[j];
                    arrays[j] = arrays[j+1];
                    arrays[j+1] = temp;
                }
            }
        }
        return arrays;
    }
}

氣泡排序優化

public class Demo07 {

    public static void main(String[] args) {
        int[] a = {52,32,62,42,84,26,35,47,65};
        int[] ints = sortArray(a);
        System.out.println(Arrays.toString(ints));
    }

    /*
    比較陣列中,兩個相鄰的元素,如果第一個數比第二個數大,我們就交換他們的位置每一次比較,都會產生出一個最大,或者最小的數字;
    下一輪則可以少一次排序!
    依次迴圈,直到結束!
     */
    public static  int[] sortArray(int[] arrays){
        //氣泡排序
        int temp = 0;//定義一個臨時變數
        boolean flag = false;//定義一個標誌位
        for (int i = 0; i < arrays.length-1; i++) {//外層迴圈,判斷我們需要迴圈多少次
            for(int j = 0;j < arrays.length-1-i;j++){//內層迴圈,比較大小
                if(arrays[j+1] > arrays[j]){//臨時變數進行交換
                    temp = arrays[j];
                    arrays[j] = arrays[j+1];
                    arrays[j+1] = temp;
                    flag = true;
                }
            }
            if(flag == false){
                break;
            }
        }
        return arrays;
    }
}