已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印。
本例的输出顺序为:dear, dog, eye, bed。
#include <stdio.h> #include <stdlib.h> void swapstr(char **a,char **b){ if(a!=b){ char *tmp=*a; *a=*b; *b=tmp; } } int compare(char *a,char *b,char *hashstr){ int lena=strlen(a); int lenb=strlen(b); int i=0;int j=0; while(i<lena&&j<lenb){ printf("%d---%d\n",hashstr[*(a+i)],hashstr[*(b+j)]); if(hashstr[*(a+i)]<hashstr[*(b+j)]){ return 1; }else if(hashstr[*(a+i)]>hashstr[*(b+j)]){ return -1; } i++;j++; } if((i==lena)&&(j==lenb)) { return 0; } if(i==lena){ return -1; } if(j==lenb){ return 1; } } int main() { char seq[]="dgecfboa"; char hashstr[256]; int count=0; memset(hashstr,0,256); int i; for(i=0;seq[i]!='\0';i++){ hashstr[seq[i]]=count++; } char arrstr[][5]={"bed","dog","dear","eye"}; int j,k; int maxword; int retu; for(j=0;j<4;j++){ maxword=j; for(k=j+1;k<4;k++){ retu=compare(arrstr[k],arrstr[maxword],hashstr); if(retu>0){ maxword=k; } } swapstr(&arrstr[j],&arrstr[maxword]); } for(int x=0;x<4;x++){ printf("%s\n",arrstr[x]); } return 0; }