c语言中如何通过函数按字典顺序排列输入的十个字符串

 我来答
袁世平1
推荐于2018-03-09 · TA获得超过536个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:397万
展开全部

如果使用的是冒泡排序,那么和整数排序唯一的不同就是这个部分:

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);
...
}

这样的话也是可以实现的.

jyxk1
2017-12-13
知道答主
回答量:1
采纳率:0%
帮助的人:929
引用袁世平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);...}这样的话也是可以实现的.
展开全部
不是字典序吧……是ASCII码的大小,大小写会有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式