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

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

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

一、什么是冒泡排序

1.1、文字描述

冒泡排序是一種簡單的排序算法。它重復地走訪要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,這也就說明排序已經完成。因為越大的元素會經由交換慢慢‘浮‘到數列的頂端,所以命名為冒泡算法排序。

1.2、程序描述

定義一個變量 i = 0,最大值為數列的長度 - 1 , i 與 i + 1 進行比較,如果 i > i + 1 則進行交換。隨著 i 的不斷增加,直到 i 達到數列長度 - 1。

附動態圖:

一起學排序算法 - 冒泡排序

 

二、簡單的代碼展示

我們先進行最基礎的操作,再依次進行比對。

PS: 這樣會產生一些無效的操作,后面我們再進行優化...

    
    public static void main(String[] args) {

        int handleTimes = 0;
        /* 定義一個簡單的亂序數組 */
        int[] intArr = {2,4,1,5,6,3,7};
        for (int i = 0;i < intArr.length; i++) {
            /* 開啟雙重循環 */
            for (int j = 0; j < intArr.length - i - 1; j++) {
                /* 拿到當前操作的數據和下一個進行比較 */
                if (intArr[j] > intArr[j + 1]) {
                    /* 我們按照從小到大排序,如果當前的大于下一個數據則兩個數據互換 */
                    int temp = intArr[j];
                    intArr[j] = intArr[j+1];
                    intArr[j+1] = temp;
                }
            }
            System.out.println("第" + handleTimes + "次排序" + CollectionUtils.arrayToList(intArr));
            handleTimes++;
        }
        System.out.println(handleTimes);
        System.out.println(CollectionUtils.arrayToList(intArr));
    }

輸出如下:

一起學排序算法 - 冒泡排序

 

三、代碼優化

通過上面的代碼我們可以看到一共進行了7次排序,但是從第四次開始已經是完成了的,后面的都是無效操作。所以我們對代碼進行了如下優化:

① 定義一個排序生效字段 isChanged,當排序進行時我們使其修改為true

② 每次大循環時我們都初始isChengerd為false,當每次大循環結束時,如果isChanged還是false,則進行已經沒有進行排序了


    public static void main(String[] args) {

        int handleTimes = 0;
        boolean isChangerd = false;
        /* 定義一個簡單的亂序數組 */
        int[] intArr = {2,4,1,5,6,3,7};
        for (int i = 0;i < intArr.length; i++) {
            isChangerd = false;
            /* 開啟雙重循環 */
            for (int j = 0; j < intArr.length - i - 1; j++) {
                /* 拿到當前操作的數據和下一個進行比較 */
                if (intArr[j] > intArr[j + 1]) {
                    /* 我們按照從小到大排序,如果當前的大于下一個數據則兩個數據互換 */
                    int temp = intArr[j];
                    intArr[j] = intArr[j+1];
                    intArr[j+1] = temp;
                    /* 這里定義一個中間變量進行操作 */
                    isChangerd = true;
                }
            }
            System.out.println("第" + handleTimes + "次排序" + CollectionUtils.arrayToList(intArr));
            /* 如果這里如果上面的操作沒有交換則說明排序已經完成 */
            if (!isChangerd) {
                break;
            }
            handleTimes++;
        }
        System.out.println(CollectionUtils.arrayToList(intArr));
    }

輸出如下:

一起學排序算法 - 冒泡排序

 

分享到:
標簽:算法 排序
用戶無頭像

網友整理

注冊時間:

網站: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

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