【问题标题】:What is lexicographical order?什么是字典序?
【发布时间】:2018-02-07 14:11:42
【问题描述】:

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

【问题讨论】:

    标签: string sorting lexicographic


    【解决方案1】:

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

    1, 10, 2
    

    这些值按字典顺​​序排列。 10 按数字顺序排在 2 之后,但 10 按“字母”顺序排在 2 之前。

    【讨论】:

    • 那么按照字典顺序,只有第一个数字会被考虑?我理解对了吗?
    • @NDesai 否。如果第一个数字匹配,则将比较第二个数字;但它比较像String - 也就是说102 之前,但11110 之后(但也在1000 之后)。因为0 小于1。词法排序将每个字符串中的字符作为字符进行比较,而不是整数值。
    • 知道了。谢谢!
    • @greybeard 你不想按共价顺序(我已经有一段时间没有化学反应了)?
    • "字典顺序是字母顺序"。这不是完全正确的。即使不涉及字母表,元组的排序也被描述为字典顺序,例如,根据字典比较,(0,4,2) 小于 (1,3,2)。例如,请参见此处:en.wikipedia.org/wiki/Ordered_vector_space#Examples
    【解决方案2】:

    字母顺序是一种特殊的字典顺序。术语词典通常是指数学规则或排序。例如,这些包括从逻辑上证明排序是可能的。在wikipedia上阅读更多关于字典顺序的信息

    字母顺序包括在处理空格、大写字符、数字和标点符号方面不同的变体。纯粹主义者认为,允许 a-z 以外的字符使排序不是“字母”,因此它必须属于更大的“词典”类别。同样,wikipedia 有更多详细信息。

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

    【讨论】:

      【解决方案3】:

      这只是表示“字典顺序”,即单词在字典中的排序方式。如果要确定字典中两个单词中的哪一个会排在另一个之前,则可以从第一个位置开始逐个字母比较单词。例如,单词 “children” 将出现在单词 “chill” 之前(并且可以认为更小),因为这两个单词的前四个字母相同但是 "children" 中第五位的字母(即 d )在 "chill" 中第五位的字母之前(或小于)(即 l )。纵向观察,“children”这个词大于“chill”,但长度不是这里的标准。同理,会出现一个包含12345的数组 在包含 1235 的数组之前。 (Deshmukh, OCP Java SE 11 Programmer I 1Z0815 Study guide 2019)

      【讨论】:

      • “这个”?阅读完整问题时,您的第一句话模棱两可。
      【解决方案4】:

      字典顺序是指字典顺序。 例如:在字典中,“ado”在“adieu”之后,因为在英文字母系统中,“o”在“i”之后。 此排序不是基于字符串的长度,而是基于最小字母在前的出现。

      【讨论】:

        【解决方案5】:

        我想添加一个与术语的编程方面而不是数学方面更相关的答案。

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

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

        例如在 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 documentation 也使用这个术语,在解释“thenComapring()”方法时指代这种类型的排序:

        返回一个字典顺序比较器和另一个比较器。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 这与多年来一直存在的其他答案有何不同?也许您可以找到一些需要答案的未回答问题。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-06-22
          • 2013-02-04
          • 2011-09-17
          相关资源
          最近更新 更多