📄 9_4.txt
字号:
#include<stdio.h>
typedef enum {RED,WHITE,BLUE} color; /* 三种颜色 */
void FlagAdjust(color a[ ],int n)
/*把由三种颜色组成的序列重排为按照红,白,蓝的顺序排列*/
{
int i,j,k;
color temp;
i=0;j=0;k=n-1;
while(j<=k && i<k)
{
while(a[k]==BLUE && j<k)k--;
while(a[j]==RED && j<k)j++;
if(a[j]==BLUE && a[k]==RED){
temp=a[j];
a[j]=a[k];
a[k]=temp;
j++;
k--;
}
else
if(a[j]==BLUE && a[k]==WHITE){
temp=a[j];
a[j]=a[k];
a[k]=temp;
k--;
}
else
if(a[j]==WHITE && a[k]==RED){
temp=a[j];
a[j]=a[k];
a[k]=temp;
j++;
}
else {
if(i<=j)i=j+1;
while(a[i]==WHITE && i<k)
i++;
if(a[i]==RED){
temp=a[j];
a[j]=a[i];
a[i]=temp;
j++;
i++;
}
if(a[i]==BLUE){
temp=a[k];
a[k]=a[i];
a[i]=temp;
i++;
k--;
}
}
}
}
main()
{
color a[]={RED,WHITE,BLUE,RED,WHITE,BLUE,RED,WHITE,BLUE};
int i;
FlagAdjust(a,9);
for(i=0;i<9;i++)
switch(a[i])
{
case RED:
printf("%d.Red ",i);
break;
case WHITE:
printf("%d.White ",i);
break;
case BLUE:
printf("%d.Blue ",i);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -