Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 在计算函数的大O表示法时,何时以及如何增加时间复杂性_Performance_Time_Time Complexity_Big O - Fatal编程技术网

Performance 在计算函数的大O表示法时,何时以及如何增加时间复杂性

Performance 在计算函数的大O表示法时,何时以及如何增加时间复杂性,performance,time,time-complexity,big-o,Performance,Time,Time Complexity,Big O,我试图学习如何计算函数的大O符号。我真的不明白我们什么时候应该加上这些“N”数字,什么时候不应该 我将使用伪代码编写一个示例,以便您了解我的想法 define function x(n){ for( i = 1 ; i < n; i++){ for ( j = 1 ; j < n; j++){ // Statement } } } 定义函数x(n){ 对于(i=1;i

我试图学习如何计算函数的大O符号。我真的不明白我们什么时候应该加上这些“N”数字,什么时候不应该

我将使用伪代码编写一个示例,以便您了解我的想法

define function x(n){
    for( i = 1 ; i < n; i++){
        for ( j = 1 ; j < n; j++){
             // Statement
        }
    }
}
定义函数x(n){
对于(i=1;i
这里,第一个for循环需要n个时间来执行,我知道,第二个for循环也需要n个时间来执行。因为这是一个嵌套的for循环,所以一个for循环在另一个for循环中,我们乘以值,得到n^2,这意味着大O表示法看起来像这样==>O(n^2)

现在,如果我们有一个像这样彼此靠近的循环,我们将添加n个值。 e、 g:

定义函数x(n){
对于(i=1;i
现在,第一个函数需要n次执行,第二个函数也需要n次执行。 所以,我们加上这些值,得到2n,所以大O表示法看起来像这样==>O(n)

现在,我的问题是:

定义函数x(n){
p=0
对于(i=1;i
因此,这里第一个函数采用log2(n),这对我来说很清楚,我理解了原因。在该函数之后,变量p将为log2(n)。因此,第二个for循环需要log2(p)时间,即log2(log2(n))


现在,我观看了一段youtube视频,视频中说我们不添加值,函数的大O符号仍然是第二个for循环log2(p)所需的时间,因此O(log2(log2(p))。这就是我的问题,为什么我们不把第一个循环所需的时间加上第二个循环所需的时间,就像我们以前做的那样。所以我们会有类似log2(n)+log2(log2(n))?为什么我们要说这个函数的大O表示法是第二个循环所需的时间,我们要忽略最后的第一个循环吗?

第一个循环取O(log(n)),因此p大约是log(n)

因此,第二个循环的复杂度为log2(log2(n)),其渐近增长速度比第一个循环慢

如果您被问及整个代码的复杂性,它由第一个循环控制,因此它是log2(n)


您所指的视频只询问第二个循环,即log2(log2(n))。

对于第一个错误,您的O(n)乘以f(n)=2n是正确的。忘了吧。视频在这里:在这个视频中,你被问及stmt的时间复杂度,而不是整个代码。因此,您只被问及第二个循环。你只是在视频里漏掉了。
define function x(n){
    for ( i = 1 ; i < n ; i++){
        // Statement
    }
    for ( j = 1 ; j < n ; j++){
        // Statement
    }
}
define function x(n){
    p = 0 
    for( i = 1; i < n ; i *= 2){
        p++;
    }
    for( j = 1 ; j < p ; j *= 2){
        // Statement
    }
}