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;
// int i = left;
// while (i < R) {
// if (arr[i] < num) {
// Util.swap(arr, L+1, i);
// L++;
// i++;
// } else if (arr[i] > num) {
// Util.swap(arr, R-1, i);
// R--;
// } else {
// i++;
// }
// }
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);
}
}
荷兰国旗问题
最新推荐文章于 2024-09-20 15:44:47 发布