time-complexity - 程序的总体时间复杂度?

标签 time-complexity big-o

假设您在数组中获取“n”个输入(为此,您必须运行一个循环,为“n”个不同位置迭代“n”次),这将具有 O(n) 复杂度。

然后你尝试执行时间复杂度为 O(log n) 或小于 O(n) 的操作。 我的问题是,这些操作的复杂度小于 O(n) 真的很重要吗,因为整个程序的时间复杂度至少为 O(n) 。

最佳答案

事实上,程序的时间复杂度可能取决于读取输入所需的时间。例如,如果程序从输入中读取一个数组,然后在该数组中进行一次二分查找,则时间复杂度为 θ(n),因为读取输入。

程序的时间复杂度也可能由生成输出所需的时间决定。例如,一棵有 n 个顶点的树有 n-1 条边,因此树上的许多算法可以在 θ(n) 时间内运行;但如果我们想打印adjacency matrix那么就没有办法在比 θ(n2) 更好的时间内完成此操作,因为输出是一个包含 n2 元素的二维数组。

我认为有一个隐含的后续问题:那么算法如何在少于 θ(n) 的时间内运行?请注意,上面讨论的是执行 IO 操作的程序。 。二分搜索算法需要 θ(log n) 时间,因为读取输入不是由二分搜索算法本身完成的。算法只是程序的一部分;该数组是由程序的不同部分从输入中读取的,因此在运行算法之前它就存在于内存中,并且算法可以通过 reference 访问它。 。这意味着算法在 θ(1) 时间内接收大小为 n 的输入。

关于time-complexity - 程序的总体时间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60063034/

相关文章:

algorithm - 在 O(n) 时间内查找 log n 个最大条目

algorithm - 合并 K 个排序链表,为什么复杂度是 O(N * K * K),而不是 O(N * K)

algorithm - 双for循环的运行时间复杂度

algorithm - 为什么乘法是 O(n^2)?

time-complexity - 简单时间复杂度 O(nlogn)

algorithm - 代码片段的运行时间是多少

python-3.x - 该算法(解决 leetcode 问题 650)(问题 2)的时间复杂度是多少?

python - python中in运算符的Big O运行时间

big-o - 算法分析

java - 判断一个数是否只在数组中出现一次