7-1 字串的氣泡排序 (20 分)
阿新 • • 發佈:2018-12-13
我們已經知道了將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());