线性搜索的平均案例复杂度

Posted

技术标签:

【中文标题】线性搜索的平均案例复杂度【英文标题】:Average case complexity of Linear search 【发布时间】:2021-09-11 09:58:51 【问题描述】:

所有教程和***都说线性搜索平均情况的复杂度是 n/2。我知道准确的答案是 (n+1)/2,它源自公式 (1+2+...+n)/n。。 p>

我的问题是,为什么消息来源说 n/2 而不是 (n+1)/2?他们没有错吗?

【问题讨论】:

您的问题没有提供足够的信息来回答。您是否假设要搜索的项目始终在列表中,并且它的第一次出现同样可能出现在输入数组中的任何位置?你问的是复杂性,但你期望得到一个精确的结果,比如 n/2 或 (n+1)/2。是关于执行的平均比较次数的问题,还是您只对复杂度类感兴趣? ***说“如果每个元素被搜索的可能性相同,那么线性搜索的平均情况为 (n+1)/2 次比较,但如果搜索概率为每个元素都不同。”尽管在侧框中它说平均性能是 O(n/2)。由于 (n+1)/2 = O(n/2) = O(n) 我认为***并没有像你说的那样错。 @PaulHankin 我想知道为什么一些消息来源说复杂度是 n/2 而其他人说是 (n+1)/2。这两个答案的依据是什么? 哦,现在我明白了。谢谢@PaulHankin n/2 和 (n+1)/2 不仅仅是彼此的大问题。他们是asymptotically equivalent 【参考方案1】:

@PaulHankin 回答

***说“如果每个元素被搜索的可能性相同,那么线性搜索的平均情况为 (n+1)/2 次比较,但如果每个元素的搜索概率不同,则平均情况可能会受到影响。”尽管在侧框中它说平均性能是 O(n/2)。因为 (n+1)/2 = O(n/2) = O(n)

@Stef 回答

n/2 和 (n+1)/2 不仅仅是彼此的大哦。他们是asymptotically equivalent。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于线性搜索的平均案例复杂度的主要内容,如果未能解决你的问题,请参考以下文章

时间复杂度最大最小 [关闭]

简单的线性M移动平均

二叉搜索树的平均查找长度及时间复杂度

如何分析时间复杂度(线性表)

使用 Kolmogorov 不可压缩性方法的平均案例算法分析

线性和二进制搜索