7-30 字符串的冒泡排序 (20分)

我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(

输入格式:
输入在第1行中给出N和K(1≤K

输出格式:
输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。

输入样例:
6 2
best
cat
east
a
free
day

输出样例:
best
a
cat
day
east
free
/下面用C语言和C++两种方法实现本题,其中C语言方法用到了strcpy()函数和strcmp()函数。C++方法中用到了swap()函数。具体实现方法如下:/
C语言:

#include
#include
int main()
{
	char s[101][11],ch[11];
	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-i-1;j++)
		{
			if(strcmp(s[j],s[j+1])>0)
			{
				strcpy(ch,s[j]);
				strcpy(s[j],s[j+1]);
				strcpy(s[j+1],ch);
			}
		}
	}
	for(i=0;i<n;i++)
		printf("%s\n",s[i]);
	return 0;
}

C++实现:

#include
#include
using namespace std;
int main()
{
	int n,k,i,j;
	string str[101];
	cin>>n>>k;
	for(i=0;i<n;i++)
		cin>>str[i];
	for(i=0;i<k;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(str[j]>str[j+1])
				swap(str[j],str[j+1]);
		}
	}
	for(i=0;i<n;i++)
		cout<<str[i]<<endl;
	return 0;
}

/总结:在C++中两个字符串比较大小直接比较就行了,而在C中则需要用一个strcmp()函数来比较,在C++中有swap()函数来直接交换两个字符串,但在C中没有能直接交换的,所以需要找个中间变量来交换。/

你可能感兴趣的:(PTA基础编程题)