发布网友 发布时间:2022-12-26 06:45
共2个回答
热心网友 时间:2023-10-15 00:08
//给你改了下 ,变量k就是在瞎折腾,完全没必要热心网友 时间:2023-10-15 00:08
选择排序不是那样的!追答for(j=i+1;j0) k=j;
if(k!=i)
{pi=p[i];p[i]=p[k]; p[k]=pi;}
}
你的这个,也能把p[i] 和 后面比较小的字符串交换! 但是错误在于 当找到第一个比当前i字符串小的字符串j时。就把k赋值为j了,以后不管大小都会交换。所以结果也是未定的。
正确的:
#include
#include
int main(void)
{
void sord(char *p[],int n);
void print(char *p[]);
char *p[]={"follow","basic","great wall","fortran","computer design"};
sord(p,5);
print(p);
return 0;
}
void sord(char *p[],int n)
{
int i,j,k;
char *pi;
for(i=0;i0) k=j;
if(k!=i)
{pi=p[i];p[i]=p[k]; p[k]=pi;}
}
}
void print(char *p[])
{
int i;
for(i=0;i<5;i++)
printf("%s\n",p[i]);
}