我在两个单独的文件上分别实现了排序算法(一个用于分治,另一个用于暴力算法)。我试图将它们相互进行基准测试,因此我将它们(通过导入)整合到一个文件中,该文件生成一个指定长度的随机列表,并使用所述列表作为输入调用所有排序函数,并显示其运行时间,尽管我的问题特别是快速排序(注意:这忽略了以相同形式调用的其他几个排序函数):
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的输入列表)。当我尝试在只包含快速排序和合并排序且具有相同长度的输入列表的文件中执行相同的操作时,它的功能非常完美
所以我的问题是:是什么导致了这种行为?如果这是导致错误的原因,it部门是否能够更改python的递归深度?
编辑:
结果表明,错误是由我使用的旋转方案(end而不是random)引起的。感谢@olisch提供此链接:
Python Quicksort Maximum Recursion Depth