成品网站 修改首页亚洲长尾关键词挖掘
我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。
输入格式:
输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。
输出格式:
输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。
输入样例:
6 2
best
cat
east
a
free
day
输出样例:
best
a
cat
day
east
free
C++ AC代码
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//字符串比较函数
bool cmp(string str1,string str2)
{int i=0;while(i<str1.length()&&i<str2.length()){if(str1[i]!=str2[i]){return str1[i]<str2[i];}i++;}return str1.length()<=str2.length()? true:false;
}int main()
{int n,k;cin>>n>>k;string strs[105];for(int i=0;i<n;i++){cin>>strs[i];}//冒泡排序for(int j=0; j<k; j++){//因为每次都会确定一个,也就是末尾的那个,所以每次都应该少判断一个int s=n-j-1;for(int z=0; z<s; z++){if(!cmp(strs[z],strs[z+1])){swap(strs[z],strs[z+1]);}}}for(int i=0;i<n;i++){cout<<strs[i]<<endl;}return 0;
}