荷蘭國旗分組問題

2021-10-23 13:29:24 字數 870 閱讀 7290

荷蘭國旗問題

荷蘭國旗有三種顏色 ,荷蘭國旗問題就是將乙個陣列如何分成三組 , 自己在陣列中選取乙個值作為 標準值 , 大於標準值的一組 , 小於標準值的一組 , 等於標準值的一組 ;這個就是荷蘭國旗問題

例如陣列 : 0 4 5 4 3 6 4

分組流程 : 首先大於區算上最後乙個數 , 然後cur是你的當前值

cur《劃分值 小於區後乙個數和當前數交換 , 小於區擴大 , 跳向下乙個數

cur=劃分值 跳向下乙個數

cur>劃分值 大於區里前乙個數和當前數交換 , 大於區擴大 , 當前位置不動

荷蘭國旗** :

我來解釋一下這裡每個變數的意義:

l代表的是當前遍歷到的索引位置

r代表最後乙個元素的位置

less 代表的是<=區域的右邊界元素位置

more 代表的=區域的左邊界元素位置 由於初始時候把最後乙個元素預設劃入大於區域 ,所以沒有減一

最後的時候 ,把最後乙個元素和大於區域左邊界進行元素交換 , 這樣分組就全部正式完成

/*荷蘭國旗問題*/

public int partition(intarr,int l,int r) else

}swap(arr,more,r);

return new int;

}

/*用來交換兩個元素位置的方法*/

public void swap(intarr,int i,int j)

荷蘭國旗問題

上方的便是乙個荷蘭國旗,從圖中我們可以很清楚的看出它的特點,它有三個區域組成,即紅,白,藍。好,現在我們的問題出來了。現在我們面前有一張桌子,桌子上整齊的擺放著紅色,白色,藍色三種線條,但他們的順序是凌亂的。我們的要求是 用乙個演算法把這些線條挑出來重新擺放順序,最後的結果就像上圖的荷蘭國旗,紅色在...

荷蘭國旗問題

問題 荷蘭國旗是由紅白藍三種顏色組成,現假設很多這三種顏色的線被打亂放置,要求從頭掃瞄一遍,3種顏色自然分開,顏色順序是紅,白,藍。問題分析 1 編碼 題目中有三種顏色,可以用0 紅,1 白,2 藍進行編碼。3 演算法 a 把n個0,1,2三種元素隨機放入陣列模擬很多這三種顏色的線被打亂放置的場景 ...

荷蘭國旗問題

荷蘭的國旗由紅色 白色和藍色3種顏色組成。現在假設有很多這3種顏色的線被存放在乙個陣列裡,要求每次操作僅能進行一次交換,在原陣列的基礎上操作。待對陣列進行一遍掃瞄後,3種顏色自然分開,顏色順序為紅 白 藍。另外,要求在o n 的複雜度下,是移動次數最少。荷蘭國旗問題 include include ...