如果我们传递list slice而不是整个list,那么这个排序列表的二进制搜索会更快吗?在
正常:
def binary_search(data, target, low, high):
if low > high:
return False
else:
mid = (low + high) // 2
if target == data[mid]:
return True
elif target < data[mid]:
return binary_search(data, target, low, mid-1)
else:
return binary_search(data, target, mid+1, high)
对于list slice(我不得不修改一下):
^{pr2}$我目前正在学习算法,所以我真的不知道这是否是最佳实践。在
第二种方法的问题是,这种切片在每次迭代时从原始列表创建另一个
list
对象,这意味着:因此,索引可能会变得更清晰,但性能实际上会降低,导致搜索效果的相反。在
我认为第二种方法的}是不必要的增加。。在
TimeComplexity
与普通二进制搜索相同,但是{第一个二进制搜索使用常量
O(1) space
,这意味着算法占用的空间对于数组中任何数量的元素都是相同的。 但在第二种情况下,空间复杂度不需要增加O(logn),因此效率低下。在相关问题 更多 >
编程相关推荐