以下代码段的Big-O是什么?

时间:2017-05-02 17:54:08

标签: java algorithm time-complexity big-o

这两个是两个代码段。我希望两个代码段中的Big-o分别有明确的解释。我已经陷入了这些。请不要复制这个,我只想要正确答案。

var data;

d3.csv("../Data/crime_2016.csv", function(d){
    data = d;
    var length = data.length;
});

1 个答案:

答案 0 :(得分:2)

第一个:

for(int i=1;i<N;i*=2){
       for(int j=0;j<i;j++){
         sum++;

       }

我们走了,

对于外循环for(int i=1;i<N;i*=2)时间复杂度:订单日志(N) 恩。达到i = 16,当N = 17时,循环将运行5次

现在让我们计算以N

表示的总时间复杂度/元素
Outer Loop iteration number | Number of elements generated inside the Inner loop | Power of 2
--------------------------- | -------------------------------------------------- | -----------
1 | 1 | 0
2 | 2 | 1
3 | 4 | 2
4 | 8 | 3

等等

因此,外部循环和外部循环的log(N)迭代生成的大致总元素是

Σ k = 0 k = Log(N) 2 k

当你解决这个问题时,你得到的解决方案就是N

因此,结合两个循环得到: Ñ

第二个很直接 -

for(int i=1;i<N;i*=2){
       for(int j=0;j<N;j++){
         sum++;

       }

外环:记录(N)

内环:N

因此总计:N Log(N)