我试图重新创建" .sort" Ruby中的函数,使用递归方法。但是,我得到的所有输出都是“Nil'而且我不确定为什么。谁能看到我做错了什么?
def sort arr
if arr.length > 0
result << arr.min
arr.delete(arr.min)
sort arr
else
new_array.length == 0
result
end
end
答案 0 :(得分:0)
您遇到的问题是您有几个未分配的变量result
和new_array
。
这是一个使用partition
和递归方法的自定义排序方法的示例。它使用数组的第一个元素,并使用partition
将数组拆分为两个部分,并使用递归将该元素包含为小于和大于第一个元素的元素。
def sort(arr)
return [] if arr.length == 0
f_element = arr.shift
less, greater = arr.partition {|x| x < f_element }
sort(less) + [f_element] + sort(greater)
end
arr = "happiness".chars
print sort(arr)
#=> ["a", "e", "h", "i", "n", "p", "p", "s", "s"]