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

Time complexity 程序的总体时间复杂度?,time-complexity,big-o,Time Complexity,Big O,假设您在一个数组中接受'n'个输入(为此,您必须运行一个循环,对'n'个不同位置重复'n'次),这将具有O(n)复杂度 然后尝试执行时间复杂度为O(logn)或小于O(n)的操作。 我这里的问题是,这些操作的复杂度小于O(n)真的重要吗,因为您的整个程序至少有O(n)个时间复杂度。不,这在大O方面并不重要,正如您的示例中,输入循环O(n)控制着进一步的O(logn)操作。见: 在分析算法以提高效率时,大O表示法非常有用。例如,完成大小为n的问题所需的时间(或步骤数)可能为T(n)=4n2− 2n

假设您在一个数组中接受'n'个输入(为此,您必须运行一个循环,对'n'个不同位置重复'n'次),这将具有O(n)复杂度

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

不,这在大O方面并不重要,正如您的示例中,输入循环
O(n)
控制着进一步的
O(logn)
操作。见:

在分析算法以提高效率时,大O表示法非常有用。例如,完成大小为n的问题所需的时间(或步骤数)可能为T(n)=4n2− 2n+2。当n变大时,n2项将占主导地位,因此可以忽略所有其他项


事实上,程序的时间复杂性可能由读取输入所需的时间决定。例如,如果一个程序从输入中读取一个数组,然后在该数组中进行一次二进制搜索,那么时间复杂度就是Θ(n),这仅仅是因为读取了输入

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

我认为还有一个隐含的后续问题:那么一个算法怎么能在少于Θ(n)的时间内运行呢?请注意,上面所说的是做这些工作的程序。二进制搜索算法需要Θ(logn)时间,因为读取输入不是由二进制搜索算法本身完成的。算法只是程序的一部分;数组是由程序的不同部分从输入中读取的,因此它在算法运行之前存在于内存中,并且算法通过。这意味着算法在Θ(1)时间内接收大小为n的输入