多键排序
给定一个索引列表和零个或多个整数列表,输出按升序排列的整数列表,键优先级来自第一个输入。 例 令键输入为[1, 0, 2],列表输入为[[5, 3, 4], [6, 2, 1], [5, 2, 1]]。这些列表需要按其第二元素,然后是第一个元素,然后是第三个元素,以升序排序: 首先,我们按index处的值排序1:[[6, 2, 1], [5, 2, 1], [5, 3, 4]] 接下来,我们使用index处的值打破第一个排序的关系0:[[5, 2, 1], [6, 2, 1], [5, 3, 4]] 最后,我们用索引处的vlues打破所有剩余的联系2(这实际上并没有改变任何东西,因为没有剩余的联系)。 细节 排序是稳定的:如果两个元素相对于给定的排序键比较相等,则它们必须在输出中保持相同的相对顺序。例如,在给定的排序键下,如果A和B相等,则输入was为[..., A, ..., B, ...],A必须放在B输出中。 排序键永远不会引用输入列表之一中不存在的元素。 不会重复排序键。因此,[1, 2, 1]不是排序键的有效列表。 排序键未引用的任何元素均不计入排序顺序。只有初始相对顺序和排序键引用的元素的值才能确定输出顺序。 您可以选择排序键是零索引还是一索引。 排序键中将没有负值。如果选择使用单索引,则排序键中也不会有零。 整数值不会超出您的语言的本机表示范围。如果您选择的语言具有本地固有的任意精度整数(例如Python)的能力,则输入整数可以存在任何整数值,但要受内存限制。 参考实现(Python 2) #!/usr/bin/env python …