我在2个单独的文件上有单独的排序算法实现(一个用于除法和征服,另一个用于蛮力算法)。我试图将它们彼此进行基准测试,因此我将它们全部(通过导入)合作到一个文件中,该文件生成指定长度的随机列表,并使用该列表作为输入调用所有排序函数并显示其运行时间,不过我的问题特别是与quicksort有关(注意:这省略了其他几种以相同形式调用的排序功能):
if __name__ == '__main__':
size = int(sys.argv[1])
input_list = randomgen(size)
start = 0
end = int(len(input_list)-1)
print('Quick Sort:')
start_time = time()
quicksort(input_list, start, end)
end_time = time()
print('Run Time: ',(end_time-start_time))
当我调用此函数时,它将引发递归深度错误,具体是:“ RecursionError:比较中超出了最大递归深度”(尽管它适用于大小小于100的输入列表)。当我尝试在仅包含快速排序的文件中执行相同的操作并且将排序与具有相同长度的输入列表合并在一起时,它的功能就很好
所以我的问题是:什么可能导致此行为,并且如果这是导致错误的原因,则可以建议更改python的递归深度吗?
编辑:原来该错误是由我使用的透视方案引起的(结束而不是随机)。感谢@olisch提供此链接:Python Quicksort Maximum Recursion Depth