我们已经知道了将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
#include<stdio.h>
#include<string.h>
//使用strcmp()函数进行大小的比较
//使用strcpy()函数进行字符串的复制以实现位置交换
int main(){
char s[101][11], tep[11];//tep[]为临时
int n, k, i, j;
scanf("%d %d", &n, &k);
for(i=0; i<n; i++)
scanf("%s", &s[i]);
for(i=0; i<k; i++){
for(j=0; j<n-1-i; j++){//①在倒数第二位的时候就得终止 ②根据冒泡规则每经过一轮排序,就可以少排最末尾的一个
if(strcmp(s[j], s[j+1])>0){
strcpy(tep, s[j+1]);
strcpy(s[j+1], s[j]);
strcpy(s[j], tep);
}
}
}
for(i=0; i<n; i++)
printf("%s\n", s[i]);
return 0;
}