Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
找不到此C代码的时间复杂度?_C_Runtime_Big O_Time Complexity - Fatal编程技术网

找不到此C代码的时间复杂度?

找不到此C代码的时间复杂度?,c,runtime,big-o,time-complexity,C,Runtime,Big O,Time Complexity,我很难弄明白如何计算某些代码的时间复杂度。我知道大O的基本知识,虽然我不能完全理解一般情况下如何计算 下面是一个我无法解决的问题的例子。希望你能: void f(int n) { int j, s; for (j = 0, s = 1; s < n; j++, s*=2) printf(“!”); double values[j]; for (int k = 0; k < j; k++) values[k] = 0;

我很难弄明白如何计算某些代码的时间复杂度。我知道大O的基本知识,虽然我不能完全理解一般情况下如何计算

下面是一个我无法解决的问题的例子。希望你能:

void f(int n) {
    int j, s;
    for (j = 0, s = 1; s < n; j++, s*=2)
        printf(“!”);
    double values[j];
    for (int k = 0; k < j; k++)
        values[k] = 0;
    while (j--)
        for (int k = 1; k < j; k++)
            values[k] += 1.0 / k;
}
void f(int n){
int j,s;
对于(j=0,s=1;s

运行时间是多少?我想要一个解释:)

第一个循环迭代
log2(n)
次,计算
j
,即
n
的最高位的顺序。复杂性
O(log(n))

第二个循环初始化大小为
j
:时间和空间复杂性
O(log(n))
的数组

第三个循环是一个嵌套循环,迭代
j
次,嵌套循环迭代
j
1
次,总共
j*(j-1)/2次。这个过程的时间复杂度是
O(log(n)^2)
,并且主导了前面的阶段


这个函数的总体时间复杂度是
O(log(n)^2)
,而空间复杂度是
O(log(n))

什么是运行时,还是大O复杂度?@juanchopanza Oh,不知道这是两种不同的东西。比如,O(logn)或O(n^2),如果这对你有意义的话,这类计算。很抱歉造成混淆。一个好的开始可能是格式化代码,使其更具可读性。在C语言中,空格并不重要(在字符串和字符文本之外),因此缩进之类的内容对编译器来说并不重要。这对人类来说非常重要。@JoachimPileborg My bad:)修正了。如果你不理解大复杂性和运行时之间的区别,我怀疑任何人都不能给出对你有意义的答案。程序执行时间受许多因素的影响,包括算法复杂性。所以我投票决定结束这段对话。终于有人有用了。非常感谢。非常感谢。