堆栈级别太深,快速实施

时间:2014-04-30 09:06:40

标签: ruby algorithm quicksort

我正在尝试在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

1 个答案:

答案 0 :(得分:1)

错误位于quick_sort函数中的以下行:

    return array if array.length <= 1

这永远不会成立,因为array.length总是会超过1,

我想你打算做

    return array if right - left <= 1