荷兰国旗问题

/**
 * 荷兰国旗问题 java写法
 */

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++); //或者写成下面的形式
        /*swap(arr,++less,cur);
        cur++;*/
      }else if(arr[cur]>num){
        swap(arr,--more,cur);  //这里互换位置 cur不跳到下一个位置
      }else{ //=num的情况
         cur++;
      }
    }
    return new int[] {less+1,more-1}
  }
}

 

posted @ 2018-10-04 10:37  前端进阶之路  阅读(193)  评论(0编辑  收藏  举报