Sortuj tablicę zgodnie z elementami innej tablicy

Mam tablicę identyfikatorów

a1 = [1, 2, 3, 4, 5]  

i mam inną tablicę obiektów z identyfikatorami w losowej kolejności

a2 = [(obj_with_id_5), (obj_with_id_2), (obj_with_id_1), (obj_with_id_3), (obj_with_id_4)]  

Teraz muszę posortować a2 zgodnie z kolejnością identyfikatorów w a1. A2 powinno teraz stać się:

[(obj_with_id_1), (id_2), (id_3), (id_4), (id_5)]  

a1 może być [3, 2, 5, 4, 1] lub w dowolnej kolejności, ale a2 powinno odpowiadać kolejności identyfikatorów w a1.

Lubię to:

a1.each_with_index do |id, idx|
  found_idx = a1.find_index { |c| c.id == id }
  replace_elem = a2[found_idx]
  a2[found_idx] = a2[idx]
  a2[idx] = replace_elem
end  

Ale to wciąż może natrafić na czas O (n ^ 2), jeśli kolejność elementów a2 jest dokładnie odwrotna do a1. Czy ktoś może mi powiedzieć najbardziej skuteczny sposób sortowania a2?

questionAnswers(4)

yourAnswerToTheQuestion