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