荷兰国旗说的其实是一个二分类问题,就是红、白双球分类,同类要挨着的问题
/* Note:Your choice is C IDE */
#include "stdio.h"
#define MAX 100
//荷兰国旗 传数组 长度
void fun(int a[],int len)
{
int head=0,last=len-1,doing=0,t,i;
while(doing<=last)
{
if(a[doing]==0)
{
t=a[doing];
a[doing]=a[head];
a[head]=t;
doing++;
head++;
}
else if(a[doing]==1)
{
doing++;
}
}
//输出
printf("荷兰国旗分类后如下:\n");
for(i=0;i<len;i++)
{
printf("%d\t",a[i]);
}
}
void main()
{
int a[MAX],i;
printf("请输入10个元素(红:0 白:1):\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
fun(a,10);
}
它的实现也好理解就是从头开始,遇到希望的值就下一个,遇到要交换的那就换