荷兰国旗问题
给一个数组,小于num的放在数组左边,等于放在中间,大于放在右边
package problem;
//荷兰国旗问题
//给一个数组,小于num的放在数组左边,等于放在中间,大于放在右边
public class NetherLandsFlag {
public static int[] partition(int[] arr,int l,int r,int num) {
int less=l-1;
int more=r+1;
int cur=l;
while(cur<more) {
if (arr[cur]<num) {
swap(arr, ++less, cur++);
}else if (arr[cur]>num) {
swap(arr, --more, cur);
}else {
cur++;
}
}
return arr;
}
public static void swap(int[] arr,int a,int b) {
int t=arr[a];
arr[a]=arr[b];
arr[b]=t;
}
}