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