首先,我创建了6个随机数列表,每个列表的长度不同:
arr = [random.randint(1,15000) for _ in range(1000)]
numbersList = [10,100,500,1000,5000,8000]
numbersForBenchmark = []
for i in range(len(numbersList)):
arr = [random.randint(1,15000) for _ in range(numbersList[i])]
numbersForBenchmark.append(arr)
print(numbersForBenchmark)
recursionTimeArray = []
现在我有一个递归快速排序:
def partition(lst, start, end):
pos = start
for i in range(start, end):
if lst[i] < lst[end]:
lst[i],lst[pos] = lst[pos],lst[i]
pos += 1
lst[pos],lst[end] = lst[end],lst[pos]
return pos
def quick_sort_recursive(lst, start, end):
if start < end:
pos = partition(lst, start, end)
quick_sort_recursive(lst, start, pos - 1)
quick_sort_recursive(lst, pos + 1, end)
然后是在所有阵列上工作的驱动程序:
for i in range(len(numbersForBenchmark)):
arrRe = numbersForBenchmark[i]
try:
n = len(arrRe)
start = time.time()
quick_sort_recursive(arrRe,0,n-1)
end = time.time()
rekTime = end - start
recursionTimeArray.append(rekTime)
except RecursionError as re:
print('Problem with recursive depth!)
如您所见,我测量time
并将时间放入数组中。但我需要6个结果(我有6个数组),但在两个示例中,我两次出错:
print('Problem with recursive depth!)
我试着用以下方法来处理它:
import sys
sys.setrecursionlimit(1500)
但程序在中午的某个时候结束了,我没有得到任何结果
我怎样才能解决这个问题
一些意见:
pos
变量将变为等于end
,因此下一个分区将只删除一个值,这意味着递归深度将等于列表中的元素数。对于较大的列表,您将因此遇到递归限制李>因此,依靠输入列表的随机性,仅仅解决第一个问题就足够了。更换这些线路:
与:
。。。应该没有更多的问题了
相关问题 更多 >
编程相关推荐