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 荷兰三色旗或者红白蓝排序问题的主要内容,如果未能解决你的问题,请参考以下文章

编程之法:面试和算法心得(荷兰国旗)

荷兰国旗 Flag of the Kingdom of the Netherlands

那些可以用快速排序秒杀的经典题

一个袋子里有红白蓝三种球各十个,至少拿出多少个才能保证有三个球的颜色是同色?

有红白蓝三种颜色的小球,其中红色和黄色一共有23个红色和蓝色一共有25个.三种颜色的球各有多少个

荷兰旗问题及随机快排和bfprt算法