我对任何特定算法都不感兴趣;我只是想知道这样做是否有一个我不知道的常用名称。
具体来说,我说X = [42, 0, 99]
和Y = ["a", "b", "c"]
。当我重新排序Y
的方式与我必须重新排序X
以使X
成为排序列表的方式相同时,又称为["b", "a", "c"]
?
重新排序本身,这是一种列表 - 即[<2nd>, <1st>, <3rd>]
- 它有一个共同的名称吗?
似乎那种操作会有一个我应该知道的名称,有自己的维基百科页面和所有内容(或者NIST的算法和数据结构词典中的一个条目:http://xw2k.nist.gov/dads/) 。当有人回答这个问题时,我可能会觉得自己像个假人。
答案 0 :(得分:2)
重新排序本身称为permutation (见旁注)。
我不知道有关这种情况的特殊术语,但你可以说你正在将列表X的排列应用到列表Y.
旁注:请注意,“排列”一词可以指一组元素的特定排序,例如有序列表[3,1, 2]是数字{1,2,3}的排列,以及元素的重新排序(例如转换本身),例如置换的那个 em>有序列表[1,2,2]的有序列表[3,1,2]。
答案 1 :(得分:1)
我大多将它称为“索引排序”。 X是用于对Y进行排序的索引。
答案 2 :(得分:1)
据我所知,这个特定情况没有术语,但是您将相同的转换应用于列表X和Y,并创建转换,以便将列表X转换为排序列表。
答案 3 :(得分:1)
您可以将其称为并行键排序,因为X包含排序键,Y包含值。在函数式语言中,例如Scala,这可以实现为X.zip(Y).sortWith((a,b)=&gt; a._1&lt; b._1).map(a =&gt; a._2 )