算法--三色球分類

現(xiàn)有n個(gè)紅白藍(lán)三種不同顏色的小球,亂序排列在一起,請(qǐng)通過(guò)兩兩交換任意兩個(gè)球,使得從左至右,依次是一些紅球、一些白球、一些藍(lán)球。

public class DutchNationalFlag {

    private void swap(int[] a, int index1, int index2) {
        int temp = a[index1];
        a[index1] = a[index2];
        a[index2] = temp;
    }

    public void dutchNationalFlag(int[] a, int n) {
        //紅色游標(biāo)
        int left = 0;
        //藍(lán)色游標(biāo)
        int right = n - 1;
        //白色游標(biāo)
        int cur = 1;
        while (cur <= right) {
            if (a[cur] == 0) { //紅色
                swap(a, left, cur);
                left++;
            } else if (a[cur] == 1) { //白色
                cur++;
            } else { //藍(lán)色
                swap(a, cur, right);
                right--;
            }
        }
    }

    public static void main(String[] args) {
        int[] a = { 0, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1 };
        DutchNationalFlag dFlag = new DutchNationalFlag();
        dFlag.dutchNationalFlag(a, a.length);
        for (int value : a) {
            System.out.print(value);
            System.out.print(" ");
        }
    }
}
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 排列組合的定義 排列的定義:從n個(gè)不同元素中,任意取m個(gè)元素,m≤n且m和n都是自然數(shù),按照一定順序排成一列,叫做...
    伍帆閱讀 5,432評(píng)論 6 10
  • 荷蘭國(guó)旗 題目描述: 拿破侖席卷歐洲大陸之后,代表自由,平等,博愛(ài)的豎色三色旗也風(fēng)靡一時(shí)。荷蘭國(guó)旗就是一面三色旗(...
    MinoyJet閱讀 1,747評(píng)論 0 0
  • 圓 是天上一輪皓月 充盈著詩(shī)篇 掛滿了想念 源 是山里一泓清泉 唱響了安靜 蹦跳著撒歡 園 是家鄉(xiāng)一方秋田 碧綠...
    一窗秋陽(yáng)閱讀 418評(píng)論 0 0
  • 教育家不是培養(yǎng)出來(lái)的,通過(guò)教育實(shí)踐,凝煉出教育思想,回到教育起點(diǎn)。教育是善良人的事業(yè),對(duì)生命的態(tài)度與認(rèn)知,做教師...
    韓妮妮閱讀 1,116評(píng)論 0 1
  • 自帶悲傷的病菌 從這篇文章,也許便開(kāi)始了,短暫,自嘲的書(shū)寫(xiě)旅程。...
    54454b80f04d閱讀 301評(píng)論 0 1

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