saw*_*awa 3 ruby arrays sorting algorithm ruby-1.9.3
我有两个阵列a,b相同长度的:
a = [a_1, a_2, ..., a_n]
b = [b_1, b_2, ..., b_n]
Run Code Online (Sandbox Code Playgroud)
当我a使用排序时sort_by!,元素a将按不同的顺序排列:
a.sort_by!{|a_i| some_condition(a_i)}
Run Code Online (Sandbox Code Playgroud)
如何重新排序b与重新排序相同的顺序/重新排列a?例如,如果a以后sort_by!就是
[a_3, a_6, a_1, ..., a_i_n]
Run Code Online (Sandbox Code Playgroud)
然后我想要
[b_3, b_6, b_1, ..., b_i_n]
Run Code Online (Sandbox Code Playgroud)
编辑
我需要做的很到位(即,保留的OBJECT_ID a,b).鉴于已排序的数组,到目前为止给出的两个答案是有用的:
a_sorted
b_sorted
Run Code Online (Sandbox Code Playgroud)
我可以
a.replace(a_sorted)
b.replace(b_sorted)
Run Code Online (Sandbox Code Playgroud)
但如果可能的话,我想直接做.如果没有,我会接受已经给出的答案之一.
Pau*_*dge 10
一种方法是将两个阵列压缩在一起并同时对它们进行排序.也许是这样的事情?
a = [1, 2, 3, 4, 5]
b = %w(a b c d e)
a,b = a.zip(b).sort_by { rand }.transpose
p a #=> [3, 5, 2, 4, 1]
p b #=> ["c", "e", "b", "d", "a"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |