【发布时间】:2020-02-28 03:58:14
【问题描述】:
谁能告诉我线性搜索应用于排序数组时的平均时间复杂度是多少? 我知道最坏的情况是 O(n),最好的情况是 O(1),但我不知道排序数组中的平均情况。
【问题讨论】:
标签: arrays data-structures time-complexity complexity-theory linear-search
谁能告诉我线性搜索应用于排序数组时的平均时间复杂度是多少? 我知道最坏的情况是 O(n),最好的情况是 O(1),但我不知道排序数组中的平均情况。
【问题讨论】:
标签: arrays data-structures time-complexity complexity-theory linear-search
假设我们在一个数组中有 n 个元素。然后我们知道平均情况总是适用于概率论,即我们假设在每个位置搜索或找到一个元素的概率是相同的,那么在这种情况下,因为我们有 n 个元素,所以概率是 1/n...
现在,为了成功搜索:
我们可能需要执行 1 次比较或 2 或 3 或 4 次等等..
因此complexity(successful search) = 1(1/n) + 2(1/n) + 3(1/n) ..... n(1/n) = (n+1)/2
同时考虑不成功的搜索:
complexity(unsuccessful search) = n(因为我们会在将其视为不成功之前查看所有数组)。
现在, 如果 q 是成功概率,1-q 将是不成功的概率。
因此,平均复杂度 = q*(n+1)/2 + (1-q)*n
这里,q=1/2
平均复杂度 = (3n + 1/4) ~ O(n)
【讨论】: