相关疑难解决方法(0)

4851
推荐指数
34
解决办法
67万
查看次数

大O,你如何计算/近似它?

大多数拥有CS学位的人肯定会知道Big O代表什么.它可以帮助我们衡量算法的实际效率(如何),如果你知道你试图解决的问题属于哪个类别,你可以弄清楚是否仍然可以挤出那么少的额外性能.1

但我很好奇,如何计算或近似算法的复杂性?

1 但正如他们所说,不要过度,过早优化是所有邪恶的根源,没有正当理由的优化也应该得到这个名称.

algorithm optimization performance complexity-theory big-o

852
推荐指数
20
解决办法
41万
查看次数

如何找到算法的时间复杂度

问题

如何找到算法的时间复杂度?

在SO上发布问题之前我做了什么?

我走过了这个,和许多其他链接

但是,我没有能够找到关于如何计算时间复杂度的明确而直接的解释.

我知道什么 ?

假设代码如下所示:

char h = 'y'; // This will be executed 1 time
int abc = 0; // This will be executed 1 time
Run Code Online (Sandbox Code Playgroud)

说一个像下面这样的循环:

for (int i = 0; i < N; i++) {        
    Console.Write('Hello World !');
}
Run Code Online (Sandbox Code Playgroud)

int i = 0; 这只会执行一次.实际计算时间i=0而不是声明.

我<N; 这将执行N + 1

i ++; 这将被执行N

所以这个循环所需的操作数量是

{1+(N + 1)+ N} = 2N + 2

注意:这仍然可能是错误的,因为我对计算时间复杂度的理解没有信心

我想知道什么? …

algorithm complexity-theory time-complexity

845
推荐指数
8
解决办法
63万
查看次数

寻找谐波系列的大O.

证明

1 + 1/2 + 1/3 + ... + 1/n is O(log n). 
Assume n = 2^k
Run Code Online (Sandbox Code Playgroud)

我把这个系列放到了总和中,但我不知道如何解决这个问题.任何帮助表示赞赏

complexity-theory big-o time-complexity

35
推荐指数
2
解决办法
3万
查看次数

这个伪代码的时间复杂度是多少?

这是伪代码.我试图计算这个函数的时间复杂度,正如这个答案所说的那样.应该是这样的:

n + n/3 + n/9 + ... 
Run Code Online (Sandbox Code Playgroud)

也许时间的复杂性就像O(nlog(n))我猜的那样?或者log(n)应该是log(n) 基数3?有人说时间复杂度是O(n),这对我来说是完全不可接受的.

j = n
while j >= 1 {
    for i = 1 to j {
        x += 1
    }
    j /= 3
}
Run Code Online (Sandbox Code Playgroud)

algorithm math loops function time-complexity

2
推荐指数
1
解决办法
385
查看次数