我正在尝试在ruby中实现quicksort算法,但我目前遇到的#34;堆栈级别太深了#34;我调用方法时出错。我认为它与无限循环有关,但我无法找到发生这种情况的地方,据我所知,确实指定了一个基础。
我的代码如下:
def partition(array, left, right)
pivot = array[right]
p_index = left
for i in left..right
if array[i] <= pivot
array[i], array[p_index] = array[p_index], array[i]
p_index += 1
end
end
return p_index
end
def quick_sort(array, left, right)
if left < right
return array if array.length <= 1
q = partition(array, left, right)
quick_sort(array, left, q - 1)
quick_sort(array, q + 1, right)
end
end
答案 0 :(得分:1)
错误位于quick_sort
函数中的以下行:
return array if array.length <= 1
这永远不会成立,因为array.length
总是会超过1,
我想你打算做
return array if right - left <= 1