以下哪一项具有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。

09-27 23:10