Это дает ваш пример вывода для примера ввода, так что, надеюсь, это то, что вы хотите (он сортирует значения каждого подмассива в первом массиве по значению в той же позиции в соответствующем подмассиве второго массива, по убыванию):
class Array
def sort_by_other_array(arr)
zip(arr).sort_by {|x,y| y}.map {|x,y| x}
end
end
a=[[1,2,3],[4,5]]
b=[[2.5,1.5,3.5],[1.5,2.5]]
a.zip(b).map {|x,y| x.sort_by_other_array(y).reverse}
#=> [[3, 1, 2], [5, 4]]