導航:首頁 > 源碼編譯 > 三色旗演算法

三色旗演算法

發布時間:2025-04-01 07:33:15

⑴ 看不懂三色旗演算法

把這個題目用數字描述:

假設0代表藍,1代表白,2代表紅。現在有數組[2,0,2,1,1,0],要求不使用額外的內存空間,只用原地交換該數組中數字的方式,將數組變成[0,0,1,1,2,2]。

按照三色旗演算法,解題步驟如下:

1. 首先假設下標L, R分別指向數組兩端。再假設下標為M的數是正在處理的數字,M初始化指向數組中的第一個數。

2. M指向的數字為0時,將M和L指向的數交換,M+1,L+1

3. M指向的數字為1時,M+1,不進行交換

4. M指向的數字為2時,將M和R指向的數交換, R-1

5. 重復2.3.4步驟,直到M>R完成排序

將[2,0,2,1,1,0]用以上步驟排序:

  1. 按步驟1,初始化L=0指向2,R=5指向0,M=0指向2;

  2. M指向2,按上述步驟4,將M和R指向的數交換,R-1。數組為[0,0,2,1,1,2]。L=0指向2, R=4指向1, M=0指向0;

  3. M指向0,按上述步,2,將M和L指向的數交換,M+1,L+1。數組仍為[0,0,2,1,1,2],M=1指向0,L=1指向0,R不變

  4. M指向0,按上述步驟2,將M和L指向的數交換,M+1,L+1。數組仍為[0,0,2,1,1,2],M=2指向2,L=2指向2,R不變

  5. M指向2,按上述步驟4,將M和R指向的數交換,R-1。數組為[0,0,1,1,2,2]。L=2指向2, R=3指向1, M=2指向1;

  6. M指向1,按上述步驟3,M+1,M=3指向1,數組和LR均不變。

7. M指向1,按上述步驟3,M+1,M=4指向2。這時M=4 > R=3,由於M前都是處理過的數字,R後也都是處理過的數字,因此這時數組完成排序。

閱讀全文

與三色旗演算法相關的資料

熱點內容
沒有滴滴app怎麼打車 瀏覽:98
大數乘法java 瀏覽:997
如何登錄伺服器看源碼 瀏覽:522
如何做伺服器端 瀏覽:154
注冊伺服器地址指什麼 瀏覽:433
文本命令行 瀏覽:97
撲克牌睡眠解壓 瀏覽:193
rc4演算法流程圖 瀏覽:159
胡蘿卜解壓方法 瀏覽:35
掃描pdf格式軟體 瀏覽:877
程序員在銀行開賬戶 瀏覽:516
android資料庫下載 瀏覽:750
中午伺服器崩潰怎麼辦 瀏覽:425
產品經理和程序員待遇 瀏覽:442
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280