思路:
设置三个变量,start代表前面的位置,i代表当前遍历,end代表后面位置。
则如果遇到前面的,就交换i 和 start 并递增,如果遇到后面的就交换 i 和 end 对应的值,并递减end,否则就向后遍历
代码:
void sortColors(int A[], int n) {
int i=0;
int start=0;
int end=n-1;
while(i<=end){
if(A[i]==0){
swap(A[i],A[start]);
start++;
i++;
}else if(A[i]==1){
i++;
}else{
swap(A[i],A[end]);
end--;
}
}
}