问题
如何找到算法的时间复杂度?
在发布SO问题之前我做了什么?
但是,在任何地方我都无法找到关于如何计算时间复杂度的清晰直接的解释。
我知道什么 ?
说一个简单的代码如下:
char h = 'y'; // This will be executed 1 time
int abc = 0; // This will be executed 1 time
说一个像下面这样的循环:
for (int i = 0; i < N; i++) {
Console.Write('Hello World !');
}
int i = 0; 这将仅执行一次。时间实际上是计算到的,i=0
而不是声明的。
我<N; 这将执行N + 1次
我++; 这将执行N次
因此,此循环所需的操作数为
{1+(N + 1)+ N} = 2N + 2
注意:这仍然可能是错误的,因为我对自己对计算时间复杂度的理解并不自信
我想知道什么?
好的,我想我知道这些小的基本计算,但是在大多数情况下,我认为时间复杂度为
O(N),O(N2),O(log n)的,为O(n!) ......和许多其他,
谁能帮助我了解如何计算一种算法的时间复杂度?我相信有很多像我这样的新手想知道这一点。
Console.Write
在计算复杂度时应该考虑这一点,这是正确的,但在这种情况下也没有什么关系,因为那只会改变一个常量因子,big-O会忽略它(请参阅答案),因此最终结果仍然是O(N)的复杂度。