我有兩個陣列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
您是否需要保存置換矩陣(或向量,因爲它可能在這種情況下)? –