Big O 表示法为我们提供了对 N 个元素使用算法所必须执行的操作数量的估计,如果 Big O 表示法为 n,那么我们需要 n 次操作来执行该函数。
列表中的线性搜索需要 n 的大 O
为什么
def linearsearch(numbers,s):
for i in range(len(numbers)):
if numbers[i] == s:
return i
return -1
我们将寻找最坏的情况,即 s 不在列表中。为此,如果我们的列表大小为 n,我们将执行所有常量操作 n 次。
当n增加时间将线性增加,因为线性搜索所花费的时间取决于列表的大小
如果所有常量操作都需要 c 时间,那么当我们对 5 个元素进行操作时需要 5c,如果我们对 10 个元素进行操作则需要 10c(这里我们假设列表中没有 s 的最坏情况)
让我们看看 O(n2)
如果我们有 n 个元素,那么所花费的时间将是 n 的平方
让我们看看二维列表中的线性搜索
Numbers = [[1,2,3][4,5,6]]
def linearsearch(numbers,s):
for inner in range(len(numbers)):
for i in range(len(numbers[inner])):
if numbers[inner][i] == s:
return i
return -1
通过上面的代码,我们考虑一些假设来说明n2
内部列表有 n 个元素,外部列表也有 n 个内部列表
当我们需要在内部列表中搜索像 s 这样的元素时,我们需要执行 n2 次 thoe 操作
如果我们在内部列表中有 2 个元素,在外部列表中有 2 个内部列表
那么 4 c 将是平均时间,如果我们考虑 c 表示恒定操作所需的时间 3,3 然后 9
因此,如果我们在内部列表中有 n 个元素,那么 tims 复杂度将为 O(n2)