【发布时间】:2020-04-20 18:37:32
【问题描述】:
我正在尝试使用带有任何可枚举对象的 while 循环来优化冒泡排序算法,但无法找到使其工作的方法。现在,我遇到了一个错误,但我想知道我在概念上是否走在正确的轨道上?
我附上了一些代码应该返回以获得更好上下文的示例。
def bubble_sort(arr)
while arr.any? { |ele, idx| ele > arr[idx + 1] }
if arr[idx] > arr[idx + 1]
arr[idx], arr[idx + 1] = arr[idx + 1], arr[idx]
end
end
return arr
end
p bubble_sort([2, 8, 5, 2, 6]) # => [2, 2, 5, 6, 8]
p bubble_sort([10, 8, 7, 1, 2, 3]) # => [1, 2, 3, 7, 8, 10]
【问题讨论】:
-
if条件正确,但while loop不正确 -
我不熟悉
any?方法,它接受一个带有两个参数(显然是元素和索引)的块。请问这是在哪个类中定义的? -
“优化”冒泡排序没有任何意义——对于大多数数据集来说,它是可用的最优化算法。使用“any”需要以某种方式对数组进行分区,这会使整个事情变得更糟。
-
@MichaelChaney - 你应该实现BogoSort,如果没有其他理由向自己证明冒泡排序不是最不优化的算法。 :-)
标签: ruby bubble-sort enumerable