【发布时间】:2012-03-16 14:24:54
【问题描述】:
我正在观看伯克利大学的在线讲座并停留在下面。
问题:假设您有一组已排序的 CD。您想查找标题以“Best Of”开头的 CD 列表。
解决方案:我们将使用二分搜索找到“Best Of”的第一个案例,然后我们打印直到该图块不再是“Best Of”
附加问题:找出这个算法的复杂性。
上界:二分搜索上界是 O(log n),所以一旦我们找到它,我们就会打印 let say k title。所以它是 O(logn + k)
Lower Bound:假设我们很幸运并且记录标题是中间标题,二分搜索下限是 Omega(1)。在这种情况下,它是 Omega(k)
这是我分析它的方式。
但是在讲座中,讲师使用了最好的情况和最坏的情况。 我有两个问题:
- 为什么需要使用最佳情况和最坏情况,Big-O 和 Omega 不被视为算法可以执行的最佳和最坏情况吗?
-
他的分析是 最坏情况:Theta(logn + k)
最佳情况:Theta (k)如果我使用最坏情况的概念来指代数据并且与算法无关,那么是的,他的分析是正确的。 这是因为假设最坏的情况(最终 CD 标题或未找到),那么 Big O 和 Omega 都是 log n 那里是 theta(log n +k)。
假设你不做“最好情况”和“最坏情况”,那你怎么分析算法呢?我的分析对吗?
【问题讨论】:
-
最简单的回答你的问题:stackoverflow.com/a/13093274/550393
标签: algorithm complexity-theory big-o binary-search