一種改進(jìn)的冒泡排序(抖動(dòng)排序、雙邊冒泡排序)

本文為原創(chuàng)文章,轉(zhuǎn)載請注明出處,謝謝你……

喜歡java并發(fā)編程的請加群:736156823
開始-->
冒泡排序(抖動(dòng)排序、雙邊冒泡排序)
代碼如下:

    // 有效的數(shù)組下標(biāo)
    public void shardingBubble(int a[], int left, int right) {
        if (null == a) {
            return;
        } else if (left < 0 || right < 0) {
            return;
        } else if (a.length <= 0) {
            return;
        } else if (right - left <= 0) {
            return;
        } else {
            int lf = left;
            int rf = right;
            out:
            for (int i = 0; i <= right; i++) {
                // 從右邊開始,也就是小的上浮
                if ((i % 2) == 0) {
                    boolean swap = false;
                    for (int j = rf; j > lf; j--) {
                        if (a[j] < a[j - 1]) {
                            swap(a, j - 1, j);
                            swap = true;
                        }
                    }
                    lf = lf + 1;
                    if (!swap) {
                        break out;
                    }
                } else {
                    // 從左邊開始,也就是大的下沉
                    boolean swap = false;
                    for (int k = lf; k < rf; k++) {
                        if (a[k] > a[k + 1]) {
                            swap(a, k, k + 1);
                            swap = true;
                        }
                    }
                    rf = rf - 1;
                    if (!swap) {
                        break out;
                    }
                }
                if (lf >= rf) {
                    break out;
                }
            }
        }
    }

喜歡java并發(fā)編程的請加群:736156823

有問題歡迎指正,這是新鮮出爐的
代碼未全面測試,留給你吧,哈哈……
結(jié)束-->
本文為原創(chuàng)文章,轉(zhuǎn)載請注明出處,謝謝你……

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

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

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