給定乙個整數陣列,給定乙個值k,這個值在原陣列中一定存在,要求把陣列中小於k的元素放到陣列的左邊,大於k的元素放到陣列的右邊,等於k的元素放到陣列的中間,最終返回乙個整數陣列。
例如:
給定陣列
[2, 3, 1, 4, 7, 6, 5, 10, 9],給定乙個值9,
那麼經過處理後結果陣列是:
[2, 3, 1 ,4, 7, 6, 5, 9, 10 ]
/**
* @description:荷蘭國旗問題 以陣列最後乙個元素為基準,小於它的放在他的前面,等於它的放在中間,大於他的放在他的後面。 分成三部分
* @author mryan
* @date 2020/5/12 9:31
* asi
*/public
class
dutchflag
;int target =9;
int[
] solve =
solve
(nums,
0, nums.length -
1, target)
;for
(int i : solve)
system.out.
println()
;for
(int i : nums)
}/**
* @param nums
* @param l
* @param r
* @param target
* @return 大於區小於區左右邊界的位置
*/public
static
int[
]solve
(int
nums,
int l,
int r,
int target)
//當前值nums[l] 小於 劃分值
else
if(nums[l]
< target)
//當前值nums[l] 大於 劃分值
else
if(nums[l]
> target)
}//返回兩個數, 第乙個是返回小於區的右邊界 閉區間
// 第二個是大於區的左邊界 閉區間
//例如此例子
// 返回6 9
荷蘭國旗問題 快速排序
目錄 一.荷蘭國旗 二.快速排序 亂序快排優化版 三.應用傳統快排求中位數 1.題目描述 給定乙個陣列arr和乙個數num,請把小於num的數放在陣列的左邊,等於num的數放在陣列的中間,大於num的數放在陣列的右邊。要求額外空間複雜度為o 1 時間複雜度為o n 2.分析思路 初始化less 1,...
荷蘭國旗問題,快速排序,隨機快速排序
荷蘭國旗問題 給定乙個陣列arr,和乙個數num,請把小於num的數放在陣列的 左邊,等於num的數放在陣列的中間,大於num的數放在陣列的 右邊。要求額外空間複雜度o 1 時間複雜度o n public static int partition int arr,int l,int r,int nu...
快速排序的應用 荷蘭國旗問題
題目描述 荷蘭國旗有三橫條塊構成,自上到下的三條塊顏色依次為紅 白 藍。現有若干由紅 白 藍三種顏色的條塊序列,要將它們重新排列使所有相同顏色的條塊在一起。本問題要求將所有紅色的條塊放最左邊 所有白色的條塊放中間 所有藍色的條塊放最右邊。題目中可以使用數字和顏色進行對應 red 0 white 1 ...