我试图找到以下算法的Big-O复杂性:
int i, j;
for (i = 0; i < n; i += 5)
{
for (j = 1; j < n; j *= 3)
{
// O(1) code here
}
}
n
是传递给方法的数组的大小。由于i += 5
和j *= 3
而挣扎于此。我知道这可能是错的,但我尝试了以下......
外循环迭代n / 5次。那只是O(n)吗?
内循环迭代log3(n)次。必须只是log(n)。
由于它们是嵌套的,所以将这些复杂性加在一起。
所以Big O复杂度只是O(n log(n))?
答案 0 :(得分:2)
您可以按以下方式继续:
答案 1 :(得分:0)
是的,您是对的。时间复杂度为n(log n)-以3为底。
尝试为n取一个非常大的输入值,您将了解[(n / 5)*(log3n)]的图形工作相同。希望这会有所帮助。