【发布时间】:2018-12-28 23:48:49
【问题描述】:
我试图实现一个冒泡排序方法,该方法接受一个块并返回按升序排序的数组。 出于某种我无法理解的原因,当我使用 { } 时我得到了正确的结果,但是当我使用 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 { }
任何帮助将不胜感激。
【问题讨论】:
-
如果给出的唯一答案令人满意(根据您留下的评论似乎是这种情况),您应该选择它作为首选答案(通过单击答案旁边的复选标记)。由于您的声誉超过 14,您也可以根据需要投票。
标签: ruby