3 c++ sorting lexicographic-ordering
我目前正在阅读std::next_permutation函数并遇到术语“词典顺序”。在特定的时间,我对这个术语没有任何经验,所以在谷歌搜索这个词,发现这种类型的订单只有一些神秘的定义,包括维基文章(至少对我来说是这样)。
那么有人可以尝试帮助我理解这一点吗?对您来说,这个术语的“好”定义是什么?
关于维基文章- 他们声称词典顺序也称为字母顺序,但随着我继续阅读,我了解到它们不一样。因此,正在进行的比较让我有点困惑。
在正常的英语用法中,当我们按字母顺序对单词进行排序时,我们采用两个规则:
如果两个单词的第一个字母相同,我们比较第二个。如果第二个字母相同,我们比较第三个,以此类推。最后,如果第一个不同的字母在相应的字母之前,则一个单词在另一个之前。
如果两个单词的长度与较短单词的长度相同,则较短的单词在前。
所以“Tom”出现在“Tooth”之前。第一个字母相同(“T”),第二个字母相同“o”,但第三个字母 diff 和“m”在“o”之前。因此,“Tom”出现在“Tooth”之前。
“Tom”出现在“Tomas”之前,因为这两个词通过前三个字母“Tom”是相同的,而“Tom”比“Tomas”短。
字典顺序只是字母顺序,适用于非字母值。考虑一系列值,不一定是字母:
(1,5,10) 在 (1,6,3) 之前,因为“5”在“6”之前。
(1,5,10) 在 (1,5,10,15,20) 之前,因为 (1,5,10) 比 (1,5,10,15,20) 短。
如果序列的元素具有某些特定含义,则字典排序特别有用,较早的值具有更高的优先级。例如,考虑以下时间:上午 9:13 和上午 8:25。如果我们用序列 (9,13) 和 (8,25) 表示这些,那么 (8,25) 在 (9,13) 之前,因为 8 在 9 之前。如果小时数相同怎么办?例如,(9,13) 在 (9,45) 之前,因为 13 在 45 之前。如您所见,字典顺序允许小时字段比分钟字段具有更高的优先级。