【问题标题】:complexity analysis of linear search in sorted array有序数组中线性搜索的复杂度分析
【发布时间】:2020-02-28 03:58:14
【问题描述】:

谁能告诉我线性搜索应用于排序数组时的平均时间复杂度是多少? 我知道最坏的情况是 O(n),最好的情况是 O(1),但我不知道排序数组中的平均情况。

【问题讨论】:

标签: arrays data-structures time-complexity complexity-theory linear-search


【解决方案1】:

假设我们在一个数组中有 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2012-03-16
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多