- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我理解,在二分搜索最佳情况的特定场景中,运行时间图(一条常量线)不能低于对数函数的任何倍数(因为当 n 接近无穷大时对数接近无穷大),这使得 Θ(log n) 不适用于最佳情况的描述,因此说 Θ(log n) 描述了二分查找所有情况的运行时增长是错误的。
我的推理是否正确?
如果是这样,这是否意味着在使用 bigO/theta/omega 符号时,我们总是在描述一组隐含的情况?例如,如果有人说一个算法在 O(n^2) 时间内运行,他们是否隐含地意味着该算法在所有情况(最佳、最差和平均)、部分情况(例如最差和平均,但不是最好的)或特定情况?换句话说,这是否意味着算法没有“通用的”bigO/theta/omega 描述,仅适用于算法的特定情况(有时可能会发生所有情况可能被描述为相同的情况)?
最佳答案
我会说你的推理是正确的。二分搜索不是 Θ(log n) 每个 情况。
下列说法正确的是:
但是(这是一个解释问题),我也可以原谅有人说:
因为通常会假设平均情况或最坏情况。但正如您所说,并非所有情况都适用,因为对于特定输入,二进制搜索可以在 O(1) 内运行。
与大 O 符号相反,大 O 符号的好处在于它表达了复杂性的上限,这意味着我们可以用它来表示例如算法速度很快,而不必关心琐碎或“幸运”的情况等等。如果你说一个算法在 O(n2) 中运行,它通常意味着最坏的情况,因为边界将适用于所有情况。如果不是,您倾向于指定它是例如仅平均情况,例如经常为快速排序所做的。这就是为什么在列出算法复杂性时,您通常会看到使用 big-O 而不是 big-Θ,例如在维基百科页面上进行二进制搜索。
关于time-complexity - 为什么二分查找在所有情况下都在 O(log n) 时间内运行,而不是在 Θ(log n) 时间内运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71834733/
我正在尝试编写一个程序,在名为 items 的数组中进行顺序搜索和二分搜索,该数组具有 10000 个已排序的随机 int 值。第二个名为 targets 的数组加载了 1000 个 int 值(50
当我尝试使用图表并为其编写一些代码但没有成功时,我遇到了一个问题:/!! 我想创建一些东西来获取图形数据并检查它是否:1- 连接2-二分法3-有循环4-是一棵树 所以我想知道,例如,是否可以将其写入以
我是一名优秀的程序员,十分优秀!