排序算法之冒泡排序(Java實現)

冒泡排序(Bubble Sort)

冒泡排序之因此叫冒泡排序,正是由於這種排序算法的每個元素均可以像小氣泡同樣,根據自身大小,一點一點的向着數組的一側移動,按照冒泡排序的思想,咱們要把相鄰的元素兩兩比較,當一個元素大於右側相鄰元素時,交換它們的位置;當一個元素小於或等於右側相鄰元素時,位置不變。動圖以下java

冒泡排序

代碼實現1.0版

/**
     * 1.0版本
     * @param array
     */
    public static void sort1(int[] array){
        // 控制全部回合
        for (int i = 0; i < array.length; i++) {
            // 實現每輪的冒泡處理
            for (int j = 0; j < array.length-i-1;j++){
                int tmp = 0;
                if (array[j] > array[j+1]){
                    tmp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tmp;
                }
            }
        }
    }

代碼實現2.0版

第六輪排序後,數列已是有序的了[1,2,3,5,6,7,8,9],但是排序算法仍然會繼續執行第七輪排序,遇到這種狀況,若是能判斷出數列已經有序並做出標記,那麼剩下幾輪的排序就沒必要執行了算法

public static void sort2(int[] array){
        //控制全部回合
        for (int i = 0; i < array.length; i++) {
            //有序標記,每一輪的初始值都是true
            boolean isSorted = true;
            //實現每輪的冒泡處理
            for (int j = 0; j < array.length-i-1;j++){
                int tmp = 0;
                if (array[j] > array[j+1]){
                    tmp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tmp;
                    //由於有元素進行交換,因此不是有序的
                    isSorted = false;
                }
            }
            //數組已經有序
            if (isSorted){
                break;
            }
        }
    }
相關文章
相關標籤/搜索