1. 程式人生 > >7-1 字串的氣泡排序 (20 分)

7-1 字串的氣泡排序 (20 分)

我們已經知道了將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

直接定義一個二維字元數a[200] [11] ,然後用strcmp函式進行比較

#include<stdio.h>
#include<string.h>
void sort(char a[200][11],int n,int k)
{
	char b[11];
	int i=0,j;
	for(i=0;i<k;i++)
	{	
		for(j=0;j<n-i-1;j++)
		if(strcmp(a[j],a[j+1])>0) 
		{	
			strcpy(b,a[j]);
			strcpy(a[j],a[j+1]);
			strcpy(a[j+1],b);
		}	
	}
	for(i=0;i<n;i++)
	   printf("%s\n",a[i]);
}
int main()
{	
	char a[100][11];
	int i,n,k;
	scanf("%d%d",&n,&k);
	for(i=0;i<n;i++)
	{	
		scanf("%s",a[i]);
	}
	sort(a,n,k);
	return 0;
}

這裡要注意的是C++裡面strcmp()的引數不可以是string 型別!!!

函式原型:int strcmp(const char *s1,const char *s2);

引數是const char*,或者char*

不能是string型別,但是可以可以利用string.c_str() 函式來返回一個const char* 的 指標後進行比對 。 const char* a = “12345”; string b = “23456”; strcmp(a, b._cstr());