Problem1876--【排序】8-3 砾石的交换排序

1876: 【排序】8-3 砾石的交换排序

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 1  Solved: 1
[Submit] [Status] [Web Board] [Creator:]

Description

设有顺序放置的n个桶,每个桶中装有一粒砾石,每粒砾石的颜色是红,白,蓝之一。要求重新安排这些砾石,使得所有红色砾石在前,所有白色砾石居中,所有蓝色砾石居后,重新安排时对每粒砾石的颜色只能看一次,并且只允许交换操作来调整砾石的位置。

Input

多组数据,每组数据两行。第一行为砾石的数量n,第二行有n个字母,代表每个砾石的颜色(字母之间用空格分隔,R代表红色,W代表白色,B代表蓝色)。当n等于0时,输入结束。

Output

每组数据输出一行。为重新排序后的砾石序列。每两个字母之间用空格隔开。

Sample Input Copy

5
R W R B R
3
B W R
0

Sample Output Copy

R R R W B
R W B

HINT

#include<iostream>
using namespace std;
void Exchange(char &x,char &y)
{//交换操作
    char t;
    t=x;
    x=y;
    y=t;
}
void QkSort(char r[],int n)
{//砾石的交换排序。(红色在前,白色居中,蓝色最后)
/**************begin************/




    /**************end************/
}
void PrintC(char c[],int n)
{//输出数据
    for(int i=0;i<n-1;i++)
        cout<<c[i]<<" ";
    cout<<c[n-1]<<endl;
}
int main()
{
    int n;                       //砾石的数量n
    while(cin>>n)
    {
        if(n==0) break;
        char c[n];
        for(int i=0;i<n;i++)
            cin>>c[i];             //输入砾石的编号
        QkSort(c,n);              //砾石的交换排序
        PrintC(c,n);
    }
    return 0;
}

Source/Category