题目描述

荷兰国旗问题

以下代码不能通过acm的测试,仅做演示使用

  1. 此题目实际要求用一个循环来解决排序问题,故而不能采用通用的排序方法来解决
  2. 分别设定三个游标,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]);
    }
}

results matching ""

    No results matching ""