编程题 7-30 字符串的冒泡排序【PAT】

编程练习题目集目录

题目

  我们已经知道了将 N N N 个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的 K ( < N ) K(<N) K<N,输出扫描完第 K K K 遍后的中间结果序列。

输入格式

  输入在第 1 1 1 行中给出 N N N K ( 1 ≤ K < N ≤ 100 ) K(1≤K<N≤100) K1K<N100,此后 N N N 行,每行包含一个长度不超过 10 10 10 的、仅由小写英文字母组成的非空字符串。

输出格式

  输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。

输入样例

6 2
best
cat
east
a
free
day

输出样例

best
a
cat
day
east
free

题解

解题思路

  首先输入要输入字符串的个数和排序的次数,然后输入字符串,然后开始排序,根据输入的排序次数,使用循环,从第一个字符串开始依次比较,交换位置,直到排序次数为止,然后直接输出排完顺序的字符串即可。

完整代码

#include<string>
#include<iostream>
using namespace std;

int main(void)
{
    
    
    int x, y;
    string a[110];
    cout << "输入两个数字:";                  // 提交时注释此行
    cin >> x >> y;
    cout << "请输入 " << x << " 个数字:";     // 提交时注释此行
    for (int i = 0; i < x; i++)
        cin >> a[i];
    while (y--)
    {
    
    
        for(int i = 0; i < x - 1; i++)
            if (a[i] > a[i + 1])
            {
    
    
                string temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
    }
    for (int i = 0; i < x; i++)
        cout << a[i] << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41918107/article/details/143160926