【发布时间】:2024-01-17 04:45:01
【问题描述】:
我已经搜索过Google 和Stack Overflow,但我无法找到关于如何计算时间复杂度的清晰直接的解释
我已经知道了什么?
说一个像下面这样简单的代码:
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而不是声明。 -
i < N;这将被执行 N+1 次 -
i++这将被执行 N 次
所以这个循环需要的操作数是{1+(N+1)+N} = 2N+2。 (但这仍然可能是错误的,因为我对自己的理解没有信心。)
好的,所以这些小的基本计算我想我知道,但在大多数情况下,我看到时间复杂度为 O(N), O(n^2), O(log n), O(n !),还有很多others。
【问题讨论】:
-
对那些感兴趣的人的奖励:Big O 备忘单bigocheatsheet.com
-
查看此博客:mohalgorithmsorbit.blogspot.com。它涵盖了递归和(尤其是)迭代算法。
-
为什么是 Console.Write('Hello World !');不是机器指令?
-
@Chetan 如果您的意思是在计算复杂度时应该考虑
Console.Write,那是对的,但在这种情况下也有些不相关,因为这只改变了一个常量因子,big-O 忽略了 (查看答案),因此最终结果仍然是 O(N) 的复杂度。
标签: algorithm time-complexity complexity-theory