java - 这个算法的时间复杂度是多少

标签 java algorithm big-o

我对竞争性编程和大 O 表示法非常陌生。

public void function(int n){
   for(int i = n; i > 0; i/=3){
       for(int j = 0; j < i; j++){
           System.out.println("Hello");
       }
   }
}

这是算法。 据我所知时间复杂度。它定义了运行时间如何受到输入数量的影响。

所以如果我们举个例子 如果'n'是10。 外循环运行 log n 次,内循环运行 'i' 次。

内部循环相对于“i”而不是“n”运行。 所以我对如何计算时间复杂度有点困惑。 我认为是 O(log n)。如果我错了,请纠正我。

是 O(log n) 还是 O (n log n) 或 (n^2)。 这个你能帮我吗。 谢谢。

最佳答案

我会尽量用最简单的术语来解释

外部循环将简单地以 3 次为底运行 log(n)。

因为,i 每次都减少 3 倍。完成的总功等于:

n + n/3 + n/9 + n/27 + .... n/(3^log(n))

因为,n/3 + ... + n/(3^log(n)) 将永远小于 n

例如让 n = 100 那么,100 + 100/3 + 100/9 + 100/27 + ... = 100 + (33.3 + 11.11 + 3.7 + ...)

我们可以清楚地看到括号中的项总是小于100

整个解决方案的总时间复杂度为 O(n)。

关于java - 这个算法的时间复杂度是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63227254/

相关文章:

hashtable - 哈希表的时间复杂度

c++ - 使用队列和堆栈将中缀转换为后缀的运行时间是多少?

java - 两个选项卡之间的 float 操作按钮

java - java for循环中递增int变量

arrays - 经过 k 次或更少次操作后具有相等奇偶性的最长子数组

python - 将 HSV 掩码转换为一组点

python - 从距原点给定距离的图中查找路径的所有组合

algorithm - 寻找有关如何计算 O (n log n) 复杂度的示例?

java - Component.CENTER 不适用于 Tablelayout(特别是使用 CODENAMEONE)

java - Spring Security 401 未经授权,即使有 permitAll