我有一个递归函数,你可以从下面看到。我也有相同功能的迭代版本。我的问题是关于递归函数的时间复杂度。根据我的知识,它应该是O(n^2)。这个函数的时间复杂度是多少?如果是O(n^2); 我使用相同的输入测试两个函数(迭代递归)为什么运行时间之间存在巨大差异?谢谢平均时间复杂度
时差迭代:4.045395 时差递归:20.554156
def naive_dac(arr):
if len(arr) == 1:
return 0
count = naive_dac(list(arr[0:len(arr) - 1]))
for i in range(0,len(arr)):
if int(arr[i]) > int(arr[len(arr) - 1]):
count += 1
return count
迭代版本
def brute_force(arr):
count = 0
for i in range(0,len(arr)):
for j in range(i,len(arr)):
if arr[j] < arr[i]:
count += 1
return count
请显示您的迭代版本。 – rendon
@rendon我加了迭代函数 –
你看过'count + = sum(arr [i]> arr [i:])'是否提高了速度,假设'arr'是一个NumPy数组,并且对函数理解外面的'我'而不是把它放在一个循环中? – ssm