/*
* 荷兰国旗问题0,1,2
* 采用三个标记
* begin指向排好的0后面的第一个
* current指向1
* end指向排好的2之前的一个
*/
void DutchFlag(int a[], int n)
{
int current = 0;
int begin = 0;
int end = n-1;
while(current <= end)
{
if(a[current] == 0)
{
swap(a[current], a[begin]);
current++;
begin++;
}
else if(a[current] == 1)
{
current++;
}
else if(a[current] == 2)
{
swap(a[current], a[end]);
end--;
}
}
}
int main() {
int aaaa[10]={0,1,2,1,1,2,0,2,1,0};
DutchFlag(aaaa, 10);
for(int i=0; i<10; i++)
printf("%d*", aaaa[i]);
荷兰国旗
最新推荐文章于 2024-04-28 23:37:54 发布