C语言程序:将若干字符串按字母顺序(由小到大)输出

#include<stdio.h>
#include<string.h>
int main()
{
void sort(char *string[],int n);
void print(char *string[],int n);
char *string[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"};
int n=5;
sort(string,5);
print(string,5);
return 0;
}
void sort(char *string[],int n)
{
char *temp;
int j,i,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(string[k],string[j])>0)
k=j;
if(k!=i)
{
temp=string[i];
string[i]=string[k];
string[k]=temp;
}
}
}
void print(char *string[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",string[i]);
}
以上源程序正确,我想问的是定义sort函数可不可以换成以下

void sort(char *string[],int n)
{
char *temp;
int j,i;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(strcmp(string[i],string[j])>0)
{
temp=string[i];
string[i]=string[j];
string[j]=temp;
}
}
}
上面的是教材中的例题,我根本就想不到用那个k,如果两个都正确,那为什么教材要搞那么复杂呢?如果下面的不正确,那又错在哪了呢?

两个程序代码都可以,教材中的代码相比较效率要高,因为教材中的算法每次遇到字符串小的只是单纯 对k赋值一次,而你的是每次都要交换数值(指针),假设最终交换了2次,对赋值而言教材算法运行2+1次,你的是3*2次
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-01-15

C语言大小字母输出

相似回答