c语言中如何通过函数按字典顺序排列输入的十个字符串
展开全部
如果使用的是冒泡排序,那么和整数排序唯一的不同就是这个部分:
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
那么在字符串排序的时候,需要用到一个库函数叫strcmp(char a[],char b[]);
这个函数在<cstring>库中[或者c语言中在<string.h>库中]
这个函数的用法就是输入字符串a,b,判断a,b的字典序大小.
若a的字典序小返回负值
若a的字典序和b相同返回0
若a的字典序大于b的字典序返回正数
然后你将上面冒泡的部分改一下的话就是:
if(strcmp(a[j],a[j+1])>0)
swap(a[j],a[j+1]);
这样的话就可以实现冒泡排序了.
如果你使用的是系统快排的话,你可以用string,也可以定义一个结构体
struct Node{
char ch[1000];
}s[12];
bool cmp(const Node &A,const Node &B){
return strcmp(A.ch,B.ch)<0;
}
int main(){
...
sort(s+1,s+10+1,cmp);
...
}
这样的话也是可以实现的.
引用袁世平1的回答:
如果使用的是冒泡排序,那么和整数排序唯一的不同就是这个部分:
if(a[j]>a[j+1]) swap(a[j],a[j+1]);那么在字符串排序的时候,需要用到一个库函数叫strcmp(char a[],char b[]);
这个函数在<cstring>库中[或者c语言中在<string.h>库中]
这个函数的用法就是输入字符串a,b,判断a,b的字典序大小.
若a的字典序小返回负值
若a的字典序和b相同返回0
若a的字典序大于b的字典序返回正数
然后你将上面冒泡的部分改一下的话就是:
if(strcmp(a[j],a[j+1])>0) swap(a[j],a[j+1]);这样的话就可以实现冒泡排序了.
如果你使用的是系统快排的话,你可以用string,也可以定义一个结构体
struct Node{ char ch[1000];}s[12];bool cmp(const Node &A,const Node &B){ return strcmp(A.ch,B.ch)<0;}int main(){...sort(s+1,s+10+1,cmp);...}这样的话也是可以实现的.
如果使用的是冒泡排序,那么和整数排序唯一的不同就是这个部分:
if(a[j]>a[j+1]) swap(a[j],a[j+1]);那么在字符串排序的时候,需要用到一个库函数叫strcmp(char a[],char b[]);
这个函数在<cstring>库中[或者c语言中在<string.h>库中]
这个函数的用法就是输入字符串a,b,判断a,b的字典序大小.
若a的字典序小返回负值
若a的字典序和b相同返回0
若a的字典序大于b的字典序返回正数
然后你将上面冒泡的部分改一下的话就是:
if(strcmp(a[j],a[j+1])>0) swap(a[j],a[j+1]);这样的话就可以实现冒泡排序了.
如果你使用的是系统快排的话,你可以用string,也可以定义一个结构体
struct Node{ char ch[1000];}s[12];bool cmp(const Node &A,const Node &B){ return strcmp(A.ch,B.ch)<0;}int main(){...sort(s+1,s+10+1,cmp);...}这样的话也是可以实现的.
展开全部
不是字典序吧……是ASCII码的大小,大小写会有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询