java 荷兰三色旗或者红白蓝排序问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 荷兰三色旗或者红白蓝排序问题相关的知识,希望对你有一定的参考价值。

//三指针问题
public void sortThreeColors(int [] nums){
  int left= 0 ; 
  int right = nums.length-1;
  for(int k = 0 ; k <= right;){
    if(nums[k]==1) k++;
    else if(nums[k]==0){
      //如果k对应的是0应该和左边的left指针交换并均加1,因为k是往右走的
      int temp = nums[k];
      nums[k]=nums[left];
      nums[left]=temp;
      left++;k++;
    }else{
      //如果k对应的是2则要和右边的right指针交换,但是只有right--,k不变
      int temp = nums[k];
      nums[k] = nums[right];
      nums[right] = temp;
      right--;
    }
  }
}

以上是关于java 荷兰三色旗或者红白蓝排序问题的主要内容,如果未能解决你的问题,请参考以下文章