package basic_class_01;
/**
* @Author qgfzzzzzz
* @Date 19-3-1
* @Version 1.0
*/
public class Code_08_NetherlandsFlag {
public static int[] partition(int[] arr, int l, int r, int p){
if(arr == null || arr.length < 2){
return null;
}
int less = l - 1;
int more = r + 1;
while(l < more){
if(arr[l] < p){
swap(arr, ++less, l++);
}
else if(arr[l] > p){
swap(arr, --more, l);
}
else{
l++;
}
}
return new int[]{less + 1, more - 1};
}
public static void swap(int[] arr, int i, int j){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static void main(String[] args){
int[] arr =
{4, 6, 3, 1, 6, 9, 1, 8, 7, 2, 3};
int[] test = partition(arr, 0, arr.length - 1, 6);
for(int k = 0; k < arr.length; k++){
System.out.print(arr[k] + " ");
}
}
}