使用 Big-O 表示法的效率,我发现自己陷入了一系列疑问,因为他们精心设计了一种可以及时setInterruptIfStopped
工作的代码,以执行下一个任务:
·查找列表的最小数量(因素的顺序并不重要)
·替代使用... min方法
我知道,这种幅度意味着时间线性增长,而JobIntentService
呈指数增长(thanks to other users)
要理解它的大小,例如,我有此代码。
O(n log n)
也可以使用列表,但是不能满足我的要求。
这会为列表n
中的每个元素返回一次...然后再实现对分搜索 def x(my_list):
n = len(my_list)
print(my_list)
if n <= 1:
print("return")
return 0
return x(my_list[:n // 2]) + x(my_list[n // 2:])
print(x([2, 3, 4, 5, 6, 7]))
谢谢:)
答案 0 :(得分:0)
您的列表排序了吗?然后找到最小值,它只是列表的第一个元素:my_list[0]
。这是O(1)(恒定时间-无需循环)。
您的列表未排序吗?然后,您必须浏览列表中的每个值,以确定哪个值与其余值相比最小。这是最小(em)O(n)(请注意,O(n)比O(nlogn)更有效)。
current_min = my_list[0]
for element in my_list:
if element < current_min:
current_min = element
答案 1 :(得分:0)
回答标题中提出的问题:
def min_of(lst):
if len(lst) <= 2:
return lst[0] if lst[0] < lst[-1] else lst[-1]
a = min_of(lst[len(lst)/2:])
b = min_of(lst[:len(lst)/2])
return a if a < b else b
更新
对不起,这是O(n)方法