【发布时间】:2018-04-14 14:35:24
【问题描述】:
我只是想问一下这个程序的 Big-O 是什么。我想是n/2,但我不确定。
public static boolean isPrime(int k) {
if (k <= 1)
return false;
else if (k > 2 && k%2 == 0)
return false;
else
{
for(int i = 3;i<=k/2;i+=2)
if (k % i == 0)
return false;
}
return true;
}
【问题讨论】:
-
一个带有“简单”边界条件和增量的循环 => O(n) (= O(n/2) ).
-
"我认为它是 n/2" - 常量在大 O 表示法中被忽略,因为
n/2 = 1/2 * n,它实际上是= O(n)。
标签: java time big-o complexity-theory