我有两个阵列a
,相同长度的b
:重新排序以相同的顺序数组作为另一个阵列重新排序
a = [a_1, a_2, ..., a_n]
b = [b_1, b_2, ..., b_n]
当我排序a
使用sort_by!
,的a
的元件将被布置在不同的顺序:
a.sort_by!{|a_i| some_condition(a_i)}
我怎样才能重新排序以相同的顺序/重排的a
重新排序b
?例如,如果a
sort_by!
后
[a_3, a_6, a_1, ..., a_i_n]
那么我想
[b_3, b_6, b_1, ..., b_i_n]
编辑
我需要做的很到位(即,保留的a
OBJECT_ID,b
) 。到目前为止给出的两个答案中给出的排序阵列是有用,:
a_sorted
b_sorted
我可以做
a.replace(a_sorted)
b.replace(b_sorted)
,但如果可能的话,我想直接做。如果不是,我会接受已经给出的答案之一。
如何为b定义'相同的顺序'?旧索引 - >新索引对于b的每个元素都是等效的? –
@MarkThomas我将它定义为具有相同的置换矩阵(http://en.wikipedia.org/wiki/Permutation_matrix)。 – sawa
您是否需要保存置换矩阵(或向量,因为它可能在这种情况下)? –