package Some_Algorithm;
/** * Author: songpo.zhang * Date: 2018/8/29 * Target: * 荷兰国旗问题 */
public class NetherlandsFlag {
/** * * @param arr * @param num */
public static void netherlansFlag(int[] arr, int num) {
if (arr == null)
return;
subProcess(arr, num, 0, arr.length - 1);
}
/** * * @param arr * @param num * @param left * @param right */
public static void subProcess(int[] arr, int num, int left, int right) {
int L = left - 1;
int R = right + 1;
while (left < R) {
if (arr[left] < num) {
Util.swap(arr, ++L, left++);
} else if (arr[left] > num) {
Util.swap(arr, --R, left);
} else {
left++;
}
}
}
/** * * @param args */
public static void main(String[] args) {
int[] arr = {3, 5, 5, 7, 5, 2, 9, 1};
netherlansFlag(arr, 5);
Util.printArray(arr);
}
}