#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
typedef struct{
char r[maxsize];
int length;
}SqList;
void AA(SqList &L){
int i,j,k;
char temp;
i=k=0;j=L.length-1;
while(i<j){
while(i<j&&L.r[i]=='W') i++;
if(L.r[i]=='R'){
temp=L.r[i];L.r[i]=L.r[k];L.r[k]=temp;
i++;k++;
}else if(L.r[i]=='B'){
while(i<j&&L.r[j]=='B') j--;
temp=L.r[j];L.r[j]=L.r[i];L.r[i]=temp;
j--;
}
}
}
int main(){
SqList L;
int i;
scanf("%d",&L.length);
getchar();
for(i=0;i<L.length;i++){
scanf("%c",&L.r[i]);
}
AA(L);
for(i=0;i<L.length;i++){
printf("%c ",L.r[i]);
}
return 0;
}
输入:
10
RBWWRBBRWB
输出:
R R R W W W B B B B
本文深入探讨了一种高效的三色珠排序算法,通过详细解释其工作原理和步骤,展示了如何将红色、白色和蓝色珠子按顺序排列。此算法不仅适用于颜色排序,也可应用于任何三分类元素的排序问题。

1098

被折叠的 条评论
为什么被折叠?



