//选择法
#include<stdio.h>
#include<string.h>
int main()
{
char *name[]={"zhang","wang","li","zhao","wu"};
char *p;
int i,j,k;
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(strcmp(name[k],name[j])>0)
k=j;
if(i!=k)
{
p=name[k];
name[k]=name[i];
name[i]=p;
}
}
for(i=0;i<5;i++)
printf("%s\n",name[i]);
return 0;
}
//冒泡法
#include<stdio.h>
#include<string.h>
int main()
{
char *name[]={"zhang","wang","li","zhao","wu"};
char *p;
int i,j;
for(i=0;i<4;i++)
for(j=0;j<5-i-1;j++)
if(strcmp(name[j],name[j+1])>0)
{
p=name[j];
name[j]=name[j+1];
name[j+1]=p;
}
for(i=0;i<5;i++)
puts(name[i]);
return 0;
}
//指针数组作为参数法
#include<stdio.h>
#include<string.h>
void a(char *name[])
{
int i,j,k;
char *p;
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(strcmp(name[k],name[j])>0)
k=j;
if(i!=k)
{
p=name[i];
name[i]=name[k];
name[k]=p;
}
}
}
void b(char *name[])
{
int i;
for(i=0;i<5;i++)
printf("%s\n",name[i]);
}
int main()
{
char *name[]{"zhang","wang","li","zhao","wu"};
a(name);
b(name);
return 0;
}