(C++)
void sortColors(int A[], int n)//假设题目要求按红白蓝三种颜色顺序排列,0指代红色,1指代白色,2指代蓝色
{
int j = 0, k = n - 1, temp;//j为红色指针,k为蓝色指针
for (int i = 0; i <= k; i++)//i为遍历指针
{
if (A[i] == 0 && i != j)
{
temp = A[j];
A[j] = A[i];
A[i] = temp;
i--;//交换之后原位置的颜色仍需检查,所以i先减1
j++;
}
else if (A[i] == 2 && i != k)
{
temp = A[k];
A[k] = A[i];
A[i] = temp;
i--;//交换之后原位置的颜色仍需检查,所以i先减1
k--;
}
}
}