题目
我们已经知道了将 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) K(1≤K<N≤100),此后 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;
}