文章目录
题目
我们已经知道了将 N N 个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的 K ( < N ) K(<N) ,输出扫描完第 K K 遍后的中间结果序列。
输入格式
输入在第 1 1 行中给出 N N 和 K ( 1 ≤ K < N ≤ 100 ) K(1≤K<N≤100) ,此后 N N 行,每行包含一个长度不超过 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; }