Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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
Java 以下循环的(最坏情况)时间分析是什么?_Java_Time_Big O_Analysis - Fatal编程技术网

Java 以下循环的(最坏情况)时间分析是什么?

Java 以下循环的(最坏情况)时间分析是什么?,java,time,big-o,analysis,Java,Time,Big O,Analysis,下面是整数变量n的一些代码: while (n > 0) { n = n/10; // Use integer division } 我试图找到这个循环的最坏情况时间分析。O(n)对我来说是新的,我对此有困难。这不就是O(n)吗?实际上算法就是O(log(n))。您正在除以10(通过循环每次减去0) 一般来说,如果一个算法的大小与n的大小成线性关系,那么它就是O(n),但是对于这个问题,如果你将n的大小增加10倍,那

下面是整数变量n的一些代码:

while (n > 0)     
    {         
        n = n/10; // Use integer division     
    } 

我试图找到这个循环的最坏情况时间分析。O(n)对我来说是新的,我对此有困难。这不就是O(n)吗?

实际上算法就是O(log(n))。您正在除以10(通过循环每次减去0)

一般来说,如果一个算法的大小与n的大小成线性关系,那么它就是O(n),但是对于这个问题,如果你将n的大小增加10倍,那么你只需要再进行一次迭代,而不是通过循环进行10倍的迭代


根据要求,这里有两个网站,有一个简短的入门。快速的谷歌搜索将发现更多:


是以2为底还是以10为底?在数学中,普通对数通常指后者,但在cs中,普通对数指前者。通常在大O符号中,你不关心基数。你知道有什么地方我可以进一步阅读“大O/n”来加深我的知识。我理解它背后的想法,但实际上,确定时间案例分析是什么让我感到不舒服。我觉得我可能想得太多了。我对java是新手,但我已经完成了java 1、java 2以及上周完成的算法。因为
log_2(x)=log_10(x)*3.3219
在大o表示法中,无论是log2还是log10都无关紧要。感谢大家的帮助。如果循环按预期工作,那么平均来说,在最坏的情况下,它将处于
o(log_10 n)
,这并不是那么糟糕
O(n)
。话虽如此,但不确定是否存在某些病理边缘的情况,其中出现了一些问题……在什么情况下,这个比例可以定为O(n)?