【发布时间】:2018-06-30 16:30:24
【问题描述】:
我完全理解冒泡排序的工作原理。只是给了我一个编码练习,我必须创建一个猴子修补到 Array 类的方法,其中使用了一个代码块并且它具有 spaceship 运算符。以下是我的代码:
class Array
def bubble_sort!
len = self.length - 1
loop do
swapped = false
for i in 0...len
if self[i] > self[i + 1]
self[i], self[i + 1] = self[i + 1], self[i]
swapped = true
end
end
break if swapped == false
end
self
end
# def bubble_sort(&prc)
# end
end
这是我的bubble_sort! 方法,但我不知道如何在块内使用“宇宙飞船操作员”<=> 来编写它。练习希望我能够将块{|num1,num2| num1 <=> num2} 升序和{|num1,num2| num2 <=> num1} 降序传递到方法中。我调用一个块没有问题,而且我理解宇宙飞船操作员如何比较其变量< == -1、= == 0 和> == 1。我唯一的问题是我不知道如何将其写入冒泡排序的实际条件语句中。
【问题讨论】:
-
这个问题怎么和Ruby on Rails有关?我认为标签是错误的。只是红宝石在这里很好!
-
编辑标签 rn.
-
排序方法的块通常用于比较两个元素以确定它们应该按什么顺序排列。那么您的冒泡排序在哪里比较事物?也许看看Comparable 以获得一些提示。
标签: arrays ruby bubble-sort spaceship-operator