java - O(n^2) 复杂度

标签 java big-o

以下哪一项具有O(n^2 )复杂度

public boolean findDuplicates(int[] inputData) {
        for (int i = 0; i < inputData.length; i++) {
            for (int j = 0; j < inputData.length; j++) {
                if (inputData[i] == inputData[j] && i != j) {
                    return true;
                }
            }
        }
        return false;
    }

对比

public boolean findDuplicates(int[] inputData) {
        for (int i = 0; i < inputData.length; i++) {
            for (int j = 0; j < inputData.length; j++) {
             System.out.println("...");
            }
        }
        return false;
    }

是否 if (inputData[i] == inputData[j] && i != j) { return true; } 在第一个循环中打破了 O(n^2) 的复杂性,如我所见,如果 inputDate 数组的长度为 2,我将仅匹配 2 个元素.

如果这个菜鸟问题,我很抱歉,但我不明白的是,复杂性是指迭代的元素总数或满足的条件总数?

这个怎么样(假设我们不必计算确切的复杂度,并且假设我们在内部循环中忽略索引越界),这是

public boolean findDuplicates(int[] inputData) {
        for (int i = 0; i < inputData.length; i++) {
            for (int j = 1; j < inputData.length; j++) {
            ....
            }
        }
        return false;
    }

还是O(n^2)

最佳答案

您发布的两种方法都具有 O(n^2) 复杂度。第一个里面的条件语句不会改变大 O。

关于java - O(n^2) 复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797722/

相关文章:

java - <= 和 >= 关系运算符与 Integer 对象一起使用

algorithm - 周期函数的渐近关系

python - 列表切片的大 O

algorithm - 如何在线性时间内构建后缀树?

algorithm - 哪种算法更快 O(N) 或 O(2N)?

Java:如何在 Java 中检查可观察列表以确保它在完成操作之前至少包含一个值?

java - Crieria Builder setMaxResults 排序问题

java - 无法获取客户的费用 list

Java创建子类构造函数时出错

c - 在 O(logn) 时间内求出从 k= 0 到 n 的 x^k 的总和