algorithm - 当有人毫无保留地谈论算法的 Big-O 时,他们指的是最好的、平均的还是最坏的运行情况?

标签 algorithm data-structures big-o

当有人毫无保留地谈论算法的 Big-O 时,他们指的是最佳、平均还是最差的运行情况?关键字是'没有资格'。

最佳答案

Big-O 技术上是上限,因此您需要进行最坏情况分析。

还有Big-OmegaBig-Theta,以及预期的情况(如果使用随机化),平均值等。通常如果有人没有指定,您可以只执行 Big-O,但是如果您能够轻松提供更多信息,那么您也可以。例如Big-Theta 为您提供 Big-O 和其他信息。如果你正在上算法课并需要提供问题分析,那么你会想和你的教授谈谈,看看他们的期望是什么。更有可能的是,他们想看看你能弄清楚多少,所以 without qualification 可能意味着向他们展示你知道或能弄清楚的东西。

如有疑问,作为要求进一步澄清信息的人。通常情况下,你能弄清楚的信息越多越好。通过进一步分析,您可能会发现算法的优势。

例如,使用链表 非常适合插入O(1)。只要您不需要搜索任何东西,那么它可能是一种可用于算法的理想数据结构。如果您的算法需要进行大量搜索,那么链表可能不是适合您算法的数据结构。

关于algorithm - 当有人毫无保留地谈论算法的 Big-O 时,他们指的是最好的、平均的还是最坏的运行情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37925400/

相关文章:

c++ - 使用 O(m) 空间在 O(n) 时间内对 vector <int>(n) 进行排序?

java - 用于在 Java 中反转 LinkedList 的 BIg-Oh

c# - 在 C# 中查找闭合形状

algorithm - 如何避免生成所有子序列

.net - 为什么 SortedDictionary<K, V>.GetEnumerator O(log n) 但 SortedSet<T>.GetEnumerator O(1)?

java - 下一个更大的元素 - https ://leetcode. com/problems/next-greater-node-in-linked-list/

performance - 改进trap实现

algorithm - 游戏中的Minimax算法

python - 合并 Python 列表中的条目

php - 将公式保存在数据库中并在运行时替换值 php