什么是字典序?

字典序的确切含义是什么? 它与字母顺序有何不同?

177109 次浏览

字典序字母顺序。另一种类型是数字排序。考虑以下值,

1, 10, 2

这些价值观是字典序的。10按数字顺序排在2之后,而10按“字母”顺序排在2之前。

词典顺序是指词典顺序。 例如: 在字典中,‘ ado’在‘ adieu’之后,因为在英语字母系统中,‘ o’在‘ i’之后。 这种排序不是基于字符串的长度,而是基于最小字母的先出现。

字母顺序是一种特殊的 按字典顺序排列。词典学这个术语通常指的是数学规则或排序。例如,它们包括从逻辑上证明排序是可能的。想了解更多关于字典序的信息,请访问维基百科

字母顺序包括处理空格、大写字母、数字和标点符号的不同变体。纯粹主义者认为,允许字符以外的字符,使排序不“字母”,因此它必须属于更大的类“字典”。同样,维基百科有更多的细节。

在计算机编程中,一个相关的问题是 字典顺序ASCII 密码顺序。按字典顺序,大写字母“ A”与小写字母“ a”相邻。但是,在许多计算机语言中,默认的字符串比较将使用 ascii 代码。对于 ascii,所有大写字母都排在小写字母之前,这意味着“ Z”将排在“ a”之前。这有时被称为 ASCIIbetic 秩序

这仅仅意味着“词典顺序”,也就是词汇在词典中的排序方式。如果要在字典中确定这两个单词中的哪一个会排在另一个的前面,那么就要从第一个位置开始按字母比较这两个单词的字母。例如,单词 “孩子”会出现在单词 “冷静”之前(可以认为比 “冷静”小) ,因为两个单词的前四个字母是相同的,但是 “孩子”第五个位置的字母(即 d)出现在 “冷静”第五个位置的字母(即 l)之前(或小于)。纵向观察,单词 “孩子”“冷静”大,但长度不是这里的标准。出于同样的原因,将出现一个包含 12345的数组 在包含 1235的数组之前。(2019年学习指南,Java SE 11程序员 I 1Z0815)

我想补充一个答案,它更多地与编程这一方面的术语,而不是数学方面的。

字典序并不总是等同于“字典顺序”,至少这个定义在编程领域并不完整,而是指“ 基于多重标准的排序”。

例如,几乎在所有著名的编程语言中,都有对对象集合进行排序的标准工具,现在如果要基于 不止一件事对集合进行排序,该怎么办?例如,假设您希望根据某些商品的价格首先进行排序,然后根据它们的受欢迎程度进行排序。这是一个字典序的例子。

例如在 Java (8 +)中,你可以这样做:

// sorts items from the cheapest AND the most popular ones
// towards the most expensive AND the least popular ones.
Collections.sort(items,
Comparator.comparing(Item::price)
.thenComparing(Item::popularity)
.reversed()
);

Java 文档在解释“ thenComapring ()”方法时也使用这个术语,指的是这种类型的排序:

返回一个带有另一个比较器的 词典编纂顺序词典编纂顺序比较器。

字典序只不过是词典中单词出现的顺序,或者最好是词典中单词出现的顺序。例如,让我们取三个字符串,“ short”,“ short”和“ small”。在字典里,“ short”在“ short ”之前,“ short”在“ small”之前。这是字典序。