交換排序之冒泡排序

原理:將序列劃分為無(wú)序和有序區(qū),不斷通過(guò)交換較大元素至無(wú)序區(qū)尾完成排序。
要點(diǎn):設(shè)計(jì)交換判斷條件,提前結(jié)束以排好序的序列循環(huán)。

    private static void sortBubble(int[] array) {
        boolean isSort = true;
        for (int i = 1; i < array.length && isSort; i++) {
            isSort = false;  //是否需要排序
            for (int j = 0; j < array.length - 1; j++) {
                if (array[j] > array[j + 1]) {    //降序只需將>改為<
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    isSort = true;
                }
            }
            printArray(String.format(Locale.getDefault(), "第 %2d 趟 : ", i), array);
        }
    }

結(jié)果:

原數(shù)組:  55  22  66  33  11  99  77  44  88
冒泡排序:
第  0 趟 :   22  55  33  11  66  77  44  88  99
第  1 趟 :   22  33  11  55  66  44  77  88  99
第  2 趟 :   22  11  33  55  44  66  77  88  99
第  3 趟 :   11  22  33  44  55  66  77  88  99
第  4 趟 :   11  22  33  44  55  66  77  88  99
局部排序
    private static void sortBubble(int[] array, int start, int end) {
        boolean isSort = true;
        end = Math.min(end, array.length);
        for (int i = start; i < end && isSort; i++) {
            isSort = false;
            for (int j = start; j < end - 1; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    isSort = true;
                }
            }
            printArray(String.format(Locale.getDefault(), "第 %2d 趟 : ", i), array);
        }
    }

對(duì)數(shù)組的【2,7)排序結(jié)果:

原數(shù)組:  55  22  66  33  11  99  77  44  88
冒泡排序:
第  2 趟 :   55  22  33  11  66  77  99  44  88
第  3 趟 :   55  22  11  33  66  77  99  44  88
第  4 趟 :   55  22  11  33  66  77  99  44  88

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 時(shí)間復(fù)雜度:高效的排序算法,比較次數(shù)和移動(dòng)次數(shù)都應(yīng)該盡可能的少。 空間復(fù)雜度:算法執(zhí)行期所需要輔助空間和待排序的數(shù)...
    碼碼Master閱讀 567評(píng)論 0 0
  • 一、原理 冒泡排序1.比較相鄰的元素,如果前一個(gè)比后一個(gè)大,就交換它們。2.對(duì)每一對(duì)相鄰元素做同樣的工作,從開(kāi)始第...
    星光下的胖子閱讀 449評(píng)論 0 7
  • 思路 冒泡排序的基本思路是通過(guò)相鄰元素直接的比較和交換位置,使較小的元素如氣泡一般逐漸往上漂浮。 實(shí)現(xiàn) 在冒泡排序...
    cysAAAA閱讀 879評(píng)論 0 1
  • 冒泡排序:相鄰元素的交換 基本思路:每趟不斷將相鄰兩個(gè)元素兩兩比較,并按“前小后大” 規(guī)則交換。優(yōu)點(diǎn):每趟結(jié)束時(shí),...
    Mad_Elliot閱讀 380評(píng)論 0 0
  • 2018-09-19 思路: 在要排序的一組數(shù)中,對(duì)當(dāng)前還未排好序的范圍內(nèi)的全部數(shù),自上而下對(duì)相鄰的兩個(gè)數(shù)依次進(jìn)行...
    vsu閱讀 163評(píng)論 0 0

友情鏈接更多精彩內(nèi)容