版本3.cpp
来自「演示了荷兰国旗问题(c语言)从简单到复杂的三种算法」· C++ 代码 · 共 64 行
CPP
64 行
#include "stdlib.h"
#include "time.h"
#include <stdio.h>
#define N 15
void swap(char *m,char *n)
{
char t;
t=*m;
*m=*n;
*n=t;
}
int main(int argc, char* argv[])
{
char a[N];
int i,j,p,q,np=N;
srand( (unsigned)time( NULL ) );
printf("原始系列\n");
for(i=0;i<N;i++)
{
switch (j=rand()%3)
{
case 0:
a[i]='r';
break;
case 1:
a[i]='w';
break;
default:
a[i]='b';
}
printf("%c ",a[i]);
}
printf("\n");
p=0;q=0;
while(p!=np)
{
if (a[p]!='w')
{
if (a[p]=='b')
{
while (a[np-1]=='b')
np--;
swap(&a[p],&a[np-1]);
np--;
}
else
{
swap(&a[p],&a[q]);
q++;
}
}
else
{
p++;
}
}
for(j=0;j<N;j++)
printf("%c ",a[j]);
printf("\n");
scanf("%d",&i);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?