Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue.
Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
Note: You are not suppose to use the library’s sort function for this problem.
Input: [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]
class Solution {
public void sortColors(int[] nums) {
if(nums==null||nums.length<2){
return;
}
int i=0;
int j=nums.length-1;
int index=0;
while(index<=j){
if(nums[index]==0){
swap(nums,index,i);
index++;
i++;
}
//这里一定要用else if
else if(nums[index]==2){
swap(nums,index,j);
j--;
}
else{
index++;
}
}
}
private void swap(int[] nums,int a,int b){
int temp=nums[a];
nums[a]=nums[b];
nums[b]=temp;
}
}