冒泡排序就是這麼容易

愚昧者怨天尤人,無能者長吁短嘆,儒弱者頹然放棄。

冒泡排序就是這麼容易

welcome rodert

冒泡排序(Bubble Sort)

科班的大多在學校時都學過數據結構和算法,不論是做算法還是做業務,排序都是經常要打交道的,還記得冒泡排序嗎?一起來看看

 

介紹

【百度百科】:它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。這個算法的名字由來是因爲越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。

實質:把大(小)的元素往前(後)調,類似於水中冒泡,較大的數沉下去,較小的數慢慢冒起來,假設從小到大,即爲較大的數慢慢往後排,較小的數慢慢往前排。

時間複雜度: O(n²)

實現

算法描述(從小到大排序):

長度爲n的數組,選取第一個數(第0位)爲 i,i與i+1比較,如果i>i+1,那麼交換位置

循環i++,直到n-1位,一趟下來,數組中最大的排到數組最後面。

 

冒泡排序流程圖

 

image.png

 

Java代碼實現

    @Test
    public void bubbleSort(){
        //創建一個亂序的數組
        int [] arr = {0, 10, 5, 9, 17, 2, 13};

        //雙層for循環,控制循環次數
        //外層是排序趟數,內層是比較次數
        for (int i=0;i<arr.length-1;i++){
            for (int j=0;j<arr.length-1-i;j++){
                if (arr[j]>arr[j+1]){//如果j>j+1,置換位置
                    int temp = arr[j+1];//臨時變量
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        //排序後結果
        for (int i:arr) {
            System.out.println(i);
        }
    }

 

轉載是一種動力 分享是一種美德 開源是一種信仰

—END—

rodert

更多文章後面會持續分享,有特別需要可以提前留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章