algorithm - 计算 FOR 循环标记如何影响复杂性

标签 algorithm

假设我们有一个 FOR 循环

int n;

for (int i = 0; i < sqrt(n); i++)
{
    statement;
}

计算 i 的 sqrt 是否会增加循环的 O(n) 复杂度?在我的示例中,Java 中的 sqrt 函数的时间复杂度为 O(log n),这对循环的时间复杂度有何影响? sqrt 函数是应用于循环的每个序列还是仅应用一次并且该值被存储并再次使用?

最佳答案

我想这可能取决于语言,但通常i < sqrt(n)检查将在每个循环迭代后运行,因此有效,您可以将其称为 sqrt(n)次。好主意是存储 sqrt(n)结果变量并将其与 i 进行比较,所以

int n;
double sn = sqrt(n);

for (int i = 0; i < sn; i++)
{
    statement;
}

关于algorithm - 计算 FOR 循环标记如何影响复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487149/

相关文章:

algorithm - 找出一组中的哪些数字组合加起来等于给定的总数

algorithm - 如何在多项式时间内设置分区?

python - 如何打印实际的最长递增子序列,而不仅仅是长度

string - O(m*n) 的最长公共(public)子串非 DP 解决方案

algorithm - 算法的时间复杂度

algorithm - 循环有向图的遍历

java - 将链表拆分为 2 个包含最小和最大数字的偶数列表

python - 在 Python 中运行 munkres 库的复杂性

java - 如何从数组中找到最接近的值?

algorithm - 就时间复杂度而言,使用最佳方法从字符矩阵形成字符串的方法有多少?