Скажем, у меня есть 2 таких массива:
# base set a = [1, 2, 3, 4, 5, 6, 7, 8, 9] # sub set b = [5, 1, 8, 3]
Какой оптимальный способ сортировки b в том же порядке, что и a?
b
a
a.sort_like(b) #=> [1, 3, 5, 8]
Что этооперация называется?
Я думаю, это то, что вы хотите:
a & b
Это будет сделано, я не уверен насчет наиболее эффективного способа.
def sort_like(other) items = [] other.each do |find| each do |item| items.append item if item == find end end items end
Если b является подмножеством a, как вы определили, то результатом всегда будет отсортированная версия b .В этом случае вы просто хотите b.sort (он не будет мутировать b, он вернет новый массив с отсортированным содержимым b).
b.sort