选择法对字符串排序问题
#include <stdio.h>
#include <string.h>
void main()
{ void f(char (*p)[6],int n);
int i;
int n=6;
char str[10][6];
char (*p)[6];
for(i=0;i<6;i++)
scanf("%s",str[i]);
p=str;
f(p,n);
printf("排序顺序");
for(i=0;i<6;i++)
printf("%s\n",str[i]);
}
void f(char (*p)[6],int n)
{ int i,j,k;
char temp[6],*t=temp;
for(i=0;i<n-1;i++)
k=i;
for(j=i+1;j<n;j++)
if(p[k]>p[j]) j=k;
strcpy(t,p[k]);
strcpy(p[i],p[k]);
strcpy(p[k],t);
}
为什么用选择法不能换?(试过冒泡法可以)
[解决办法]
#include <stdio.h>#include <string.h>void f(char (*p)[6],int n);void main(){ int i; int n=6; char str[10][6]; char (*p)[6]; for(i=0;i<6;i++) scanf("%s",str[i]); p=str; f(p,n); printf("排序顺序"); for(i=0;i<6;i++) printf("%s\n",str[i]);}void f(char (*p)[6],int n){ int i,j,k; char temp[6],*t=temp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(p[k]>p[j]) k = j; } if( k != i ) { strcpy(t,p[k]); strcpy(p[i],p[k]); strcpy(p[k],t); } }}