荷蘭國旗問題

2021-10-02 11:02:25 字數 753 閱讀 8769

問題一: 給定乙個陣列,和乙個數num,把小於等於num的數放在陣列的左邊,大於num的數放在右邊。

使用乙個指標(**中為陣列下標less)儲存陣列中小於num的區間,從-1開始。

使用另乙個指標來遍歷陣列(**中為index),遍歷過程中將小於等於num的數歸入左邊區間,陣列下標下移。

func partion(arr int, target int) 

index = index + 1

}}

問題二:(荷蘭國旗問題)給定乙個陣列arr,和乙個數num,請把小於num的數放在陣列的左邊,等於num的數放在右邊,大於num的數放在左邊

分別使用乙個指標(less和more)來區分小區間和大區間

使用index來遍歷陣列,對於小於num的數放到左邊,index向右移,對於等於num的數index直接向右移,對於大於num的數先放到右邊,index保持不動繼續比較

func partioncountry(arr int, target int)  else if arr[index] > target  else 

}}

下面是上述**用到的用於交換陣列中倆個數的方法**:

func swap(arr int, l, r int) 

arr[l], arr[r] = arr[r], arr[l]

}

荷蘭國旗問題

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

荷蘭國旗問題

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

荷蘭國旗問題

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