C语言中说的按字典顺序是什么意思???

是说按abc........这样排?那大写和小写怎么排?还是按字符的ACII码排?那是从大到小还是从小到大排?还是按其他什么方式排?那位高手知道解释下啊?... 是说按abc........这样排?那大写和小写怎么排?
还是按字符的ACII码排?那是从大到小还是从小到大排?
还是按其他什么方式排?
那位高手知道解释下啊?
展开
 我来答
淑婷CST
高粉答主

2018-03-31 · 关注我不会让你失望
知道小有建树答主
回答量:127
采纳率:96%
帮助的人:2.6万
展开全部

就是说,将多个字符串的同一位置的字符按照26个字母的顺序进行比对。a最小,z最大。

a < b;

aa < ab;  因为第二位置上,前面字符串是a,后面字符串是b,所以是小于关系,以此类推。

C语言排序算法:快速排序

1、假设我们给一个int数组进行排序,数组中数字初始序列为int a[9]={3,6,5,9,7,1,8,2,4}

2、分析快速排序的原理前,我们先声明一些东西,首先设置一个临时变量用来存放随机取出数组中的一个数,一般我们取数组的第一个元素也就是说temp=a[0],同时设置两个游标分别指向数组第一个元素和最后一个元素。

三、算法的基本运算步骤为:1、依次比较数组的后游标所指与temp的大小,如果temp<a[j],则j--,直到遇到第一个temp>a[j],则停止移动,将a[j]赋值给a[i]

四、算法的基本运算步骤为:2、依次比较数组的前游标所指与temp的大小,如果temp>a[i],则i++,直到遇到第一个temp<a[i],则停止移动,将a[i]赋值给a[j]

五、算法运算步骤为:3、判断i是否等于j,如果不相等则循环1、2步,直到i等于j,则完成一次快速排序。

六、算法解释:这样一次循环做完后结果就是比temp小的尽量放在temp前,比temp大的尽量放在temp后。但是这种顺序不是稳定的,会有调整。因此快速排序不是一种稳定的排序。以下是实现程序。

七、一次排序完之后在分别对temp前的数组元素和temp后的数组元素分别进行快排,直到数组元素个数为1则停止。

百度网友8ba46b00b
2011-11-02 · 超过11用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:35.2万
展开全部
字典序这个东东的来历用我们查阅字典的经验来解释一定是最合适不过了...谁也不想..在一个混乱编辑的字典里面查一个字..(- -不知道 有这样的字典么...)
这个...如果手边有英文字典的话会更好...英文字典是没有检字表的...总是可以按现在翻页面确定所要找的那个单词在前面还是后面......
不知道小时侯大家有没有在书的侧页写过名字和班级......写在那里的字会有一种朦胧的感觉...
如果您的字典够厚实的话...侧页也一定会有加深的标签...如果再厚一点的话...标签里可以写下A,B,C,D..如果更厚重一点的书...(我唯一见
过的一本是...某超级化学手册..第78版..)会在侧页的位置压出标签...
(...记得中考的时候...政治历史开卷...家人曾经在每本课本的章节的位置贴上商店里用作价格标签的小纸条...嘿嘿...)
对于类似字典这样需要经常进行检索的东西...字典序的发明是很自然的...
人们为了可以找到单词所在的位置...需要可以通过它的第一个字母就迅速确定它在书哪一块...再根据第二个字母...再缩小这个范围..
(其实我们不一定会用上每一个字母...只要限制的范围很小就很好...)
这样..一个英文单词可以算是一个字符串...(很多情况下我们可以直接对字符串进行比较....这个时候用到的就是字典序了..)
汉语字典还是不太一样的额...通常里头会有两种检字表...前面是拼音..后面用的是部首...后面这个还比较麻烦..得学上一阵子...虽然有时
候我们也不得不用它...

数字也可以作为特别的字符串...这种情况下...如果我们用字典序进行比较...就有可能会出现下面这种情况...
"100">"1000"..(加引号的目的是为了区别数字..与数字串..)
这个好象没道理的样子.."1000"怎么比"100"还要小一些呢...
事实上呢.在计算机里...我们会这么看..和之前一样...我们会首先比较第一个字符...
这里"1"='1'..(已经可以看到区别了..在数中..数字因为位置的不同会有不同的意义..而这里.这种分别变的不一样了...)
..一步比较...还没有办法分辨出它们的大小...只好再比较之后的数...
这种情况回直到最后一次尝试...第一个字符串已经空掉之前...
如果硬要比较的话...
空格的ascii码值是32.(我觉得Ascii码还是用两位十六进制表示比较合适拉...咳咳..
书上告诉我..要在十六进制前加"0x"..注意是零艾克丝..不是呕哎克丝..额..虽然我也不知道是为啥.而且不得不承认这个还真不好用眼睛区
分.#24..0x20)..
当然这里还不是空格...
真正意义上的虚无.. "" 的ascii码值是0x00...
而数字0是0x30..

我们是不是应该给字典序...一个准确的数学描述呐- -...
(这个...我觉得是不是像S1<S2当前仅当什么什么什么...这样字典序的小于就有了...大于是对称的...应该可以不描述...再叙述一下等于就好
拉?..我觉得在这里...它好象没什么帮助的样子..不如用程序语言或者自然语言描述好...)

恩...这样看来...排列中出现的顺序并不是完全典型的字典序..如果把它看做字符串..它的长度是固定的...并且每一个位置的元素总是取于
前面的一些数字...

好好理解理解.......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jaybestwang
推荐于2017-11-24 · TA获得超过4106个赞
知道小有建树答主
回答量:940
采纳率:0%
帮助的人:705万
展开全部
你可以看看字典里的单词是怎么排序的啊,先大写字母,然后小写字母吧
比如A, a, ab, abc, ac排序应该是
A, a, ab, abc, ac
先比较第一个字符,A比a在前,所以第一个是A,比较第二个,a只有一个字符,自然最小,后面是b比c小,所以ab,abc在ac前,ab,abc再比较,第三个字符,ab没有了,就排在abc前
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
揣着梦去旅行
2013-04-10 · 去旅行,去探寻那片未知的风景。
揣着梦去旅行
采纳数:1 获赞数:11

向TA提问 私信TA
展开全部
#include <stdio.h>
#include <string.h>
main()
{
char a[5][10],t[10];
int i,j;
for(i=0;i<5;i++)
{
printf("请输入第%d个同学名字:",i+1);
gets(a[i]);
}
for(i=1;i<5;i++)
for(j=0;j<5-i;j++)
if(strcmp(a[j],a[j+1])<0)
{
strcpy(t,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],t);
}
for(i=0;i<5;i++)
puts(a[i]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wacha
2011-11-02 · TA获得超过1354个赞
知道小有建树答主
回答量:1574
采纳率:0%
帮助的人:1142万
展开全部
先小写后大写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式