我正在阅读C ++ RobertSedwick的Algorithms中的多维排序,如下所示。
要处理多维排序,其中排序键是向量并且要重新排列记录以使键的第一个组件按顺序排列,那么第一个组件相等的那些按顺序由第二个组件排序,依此类推。如果组件没有重复的kdeys,问题就会减少到第一个组件的排序;但是,在典型的应用程序中,每个组件可能只有几个不同的值和三向分区(移动到中间分区的下一个组件。
我对上述文字的疑问是
感谢您的时间和帮助
答案 0 :(得分:2)
作者正在描述映射中的lexicographical order个键。想象一下,你有一对值列表:
(4 3), (2 3), (1 4), (4 2)
每对中的第一个被称为“第一个组件”,第二个当然是“第二个组件”。这些项目的词典排序是:
(1 4), (2 3), (4 2), (4 3)
我们如何达到这个目标?首先,这些对按其第一个组件排序。第一个组件是4, 2, 1, 4
,其顺序为1, 2, 4, 4
。但有两个四肢。我们可以通过其第二个组件进一步对它们进行排序,以便(4 2)
出现在(4 3)
之前。
当然,他们不需要成对。您可以将词典顺序应用于具有任意数量值的元素。它们按第一个组件排序,然后是第二个组件,然后是第三个组件等。
此排序的名称来自我们如何以多种语言订购单词。鉴于三个名字,约翰,吉姆和爱丽丝,我们如何订购它们?首先我们按第一个字母排序,然后是第二个字母,依此类推。这些名字的字典顺序是Alice,Jim,John。
在作者的描述中,这种排序用于订购地图的键。也就是说,这些对被映射到某个值。例如,键可以是一对,值是一个字母:
(4 3) => A, (2 3) => B, (1 4) => C, (4 2) => D
按字典顺序排序键后这些字母的顺序为C, B, D, A
。
答案 1 :(得分:1)
作者对第一个组件,第二个组件的含义是什么?
数组中的第一个,第二个元素。这是: int arr1 [] = {1,2,3,4},arr2 [] = {5,6,7,8} arr1的第一个组件是1,arr2的第一个组件是5。
作者的意思是,如果组件没有重复键,问题会减少到第一个组件的排序?
如果数组中的所有第一个元素都不同,那么只需对第一个元素进行排序。
答案 2 :(得分:1)
1-如果您有3个项目:
A: {1 2 3 4 5}
B: {2 5 5 5 5}
C: {2 6 6 6 6}
A的第一个成分为1,B和C为2
2-如果你需要排序A ans B,因为A< B的第一个组成部分,你不需要再进一步了,你不必像比较B和C那样比较第二个元素