【发布时间】:2020-10-27 03:35:15
【问题描述】:
def binsearch(a):
if len(a) == 1:
return a[0]
else:
mid = len(a)//2
min1 = binsearch(a[0:mid])
min2 = binsearch(a[mid:len(a)])
if min1 < min2:
return min1
else:
return min2
我试图提出 min1
【问题讨论】:
-
你是指
if min1 < m2这一行,那一行的时间复杂度是多少?还是你问的是整个函数的时间复杂度? -
@JohnKugelman 特别是一行 :(
-
什么是
a,一个数字列表? -
@JaeYing 我没有注意到您的函数实际上不是二进制搜索。你的函数是
O(n)。而min1 < min2作为单个表达式是O(1)。 -
@JaeYing 它被称为二分搜索,但实际上在每个函数调用中它会进行一次比较并处理大小为
n/2的两部分,两者的总大小均为n。所以基本上它不会像二分搜索那样将处理后的数组的大小减半。
标签: python time-complexity big-o binary-search