日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

按照冒泡排序的思想,我們要把相鄰的元素兩兩比較,當一個元素大于右側相鄰元素時,交換它們的位 置;當一個元素小于或等于右側相鄰元素時,位置不變。

一、定義

冒泡排序是最基礎的排序算法。

冒泡排序的英文是bubble sort,它是一種基礎的交換排序。

冒泡排序這種排序算法的每一個元素都可以像小氣泡一樣,根據自身大小,一點一點地向著數組的一側移動。

 

二、思路

按照冒泡排序的思想,我們要把相鄰的元素兩兩比較,當一個元素大于右側相鄰元素時,交換它們的位 置;當一個元素小于或等于右側相鄰元素時,位置不變。

經過第一輪后: 元素9作為數列中最大的元素,就像是汽水里的小氣泡一樣,“漂”到了最右側。

每一輪結束都會有一個元素被移到最右側。

 

三、實現

1、冒泡算法

public static void main(String[] args) {
    int[] array = {1,6,2,5,3,0,3,5,4};
    array = bubbleSortBySortedExchanged(array);
    for(int i =0 ; i < array.length; i++){
        System.out.println(array[i]);
    }

}

    public static int[] bubbleSort(int[] array){
        //有array.length-1個數字需要交換
        for(int i = 0; i < array.length - 1; i++){
            //每個數字比較的次數是array.length-1-i
            for(int j = 0; j < array.length - 1 - i; j++){
                //如果當前值大于后一個值,則將更大的值移到后一位
                if(array[j] > array[j+1]){
                    swap(array[j],array[j+1]);
                }
            }
        }
        return array;
    }

   //互相交換值
    public static void swap(int a,int b){
        int temp = a;
        a  = b;
        b  = temp;
    }

2、冒泡算法優化

(1)外層優化

第6輪已經可以結束了,也就是如果不需要交換了,則說明已經排好序了

思路:在外層循環處,設置標志isSort,默認為排好,如果不交換則跳出本次循環

(2)內部優化

已經被移到右側的元素不用再參與比較了

思路:設置lastExchangeIndex標志單輪比較中最后一次比較的數值下標,下一輪比較就以lastExchangeIndex結束。

private static  int[] bubbleSortBySortedExchanged(int[] array){
    if(array == null || array.length < 2){
        return array;
    }
    //單輪比較中最后一次交換的數值下標
    int lastExchangeIndex = 0;
    int sortBorder = array.length - 1;
    //不交換則表示已排好
    boolean isSorted = true;
    for(int i = 0 ;i < array.length - 1; i++){
        for(int j = 0; j < sortBorder ; j++){
            if(array[j] > array[j+1]){
                isSorted = false;
                int temp = array[j+1];
                array[j+1] = array[j];
                array[j] = temp;
                lastExchangeIndex = j;
            }
        }
        sortBorder = lastExchangeIndex;
        if(isSorted){
            break;
        }
    }
    return array;
}

四、復雜度

時間復雜度:O( n的2次方 )

空間復雜度:O(1),也就是原地排序

穩定性:相等元素之間原有的先后順序不變,也就是穩定排序

分享到:
標簽:冒泡 排序
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定