我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<_N_),输出扫描完第_K_遍后的中间结果序列。
输入格式:
输入在第1行中给出N和K(1≤K<_N_≤100),此后_N_行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。
输出格式:
输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。
输入样例:
6 2bestcateastafreeday
输出样例:
bestacatdayeastfree
#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;}
