Я пытался реализовать метод пузырьковой сортировки, который принимает блок и возвращает массив, отсортированный в порядке возрастания.По какой-то причине, которую я не могу понять, я получаю правильный результат, когда использую {}, но я получаю ошибку «блок не указан», когда я использую do ... end.
Вот код:
def bubble_sort_by(arr)
return arr if arr.size == 1
swapped = true
while swapped
swapped = false
(0...arr.size - 1).each do |index|
block_result = yield(arr[index], arr[index + 1])
# binding.pry
if block_result >= 1
arr[index], arr[index + 1] = arr[index + 1], arr[index]
swapped = true
# binding.pry
end
end
end
arr
end
p bubble_sort_by(["hi","hello","heys"]) do |left,right|
left.length - right.length
end
#the code returns ["hi", "heys", "hello"] when the block is passed with { }
Любая помощь будет наиболее ценной.