荷兰国旗问题
以下代码不能通过acm的测试,仅做演示使用
- 此题目实际要求用一个循环来解决排序问题,故而不能采用通用的排序方法来解决
- 分别设定三个游标,curr,left,right。其中curr 指向当前的数字,left指向当前的0,right指向当前的2,
#include <stdio.h>
int main(){
int a[6]={2,1,0,2,0,1};
int curr=0;
int right=5;
int left=0;
int i=0;
int tmp=0;
while(curr<=right){
if(a[curr]==0){
tmp=a[curr];
a[curr]=a[left];
a[left]=tmp;
curr++;
left++;
}
else if(a[curr]==2){
tmp=a[curr];
a[curr]=a[right];
a[right]=tmp;
right--;
}
else{
curr++;
}
}
for(i=0;i<6;i++){
printf("%d\t",a[i]);
}
}