思路
采用三个指针
1)头指针之前都是第一个数
2)尾指针之后都是地三个数
3)两个指针之间是第二个数
看一下例子:
例如对{1,0,0,2,2,1,0,2}进行排序
代码部分
void swap(int *a,int*b)
{ int temp;
temp = *a;
*a = *b;
*b = temp;
}
void sortColors(int* nums, int numsSize)
{
int p0 = 0;
int cur = 0;
int p2 = numsSize-1;
while(cur<=p2)
{
if(nums[cur]==2)
{
swap(&nums[cur],&nums[p2]);
p2--;
}
else if(nums[cur]==0)
{
swap(&nums[cur],&nums[p0]);
p0++;
cur++;
}
else{
cur++;
}
}
}