为什么以下函数的时间复杂度为O(n)?我无法理解我的生活.
void setUpperTriangular (
int intMatrix[0,…,n-1][0,…,n-1]) {
for (int i=1; i<n; i++) {
for (int j=0; j<i; j++) {
intMatrix[i][j] = 0;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不断将最终时间复杂度定为O(n ^ 2),因为:
i: execute n times{//Time complexity=n*(n*1)
j: execute n times{ //Time complexity=n*1
intMatrix[i][j] = 0; //Time complexity=1
}
}
Run Code Online (Sandbox Code Playgroud) 以下是我对该方法的看法:
public int[] generateNumbers(int numberOfTimes){
int[] generatedNumbers = new int[numberOfTimes];
int counter = 0;
while(counter < generatedNumbers.length){
generatedNumbers[counter] = generator.nextInt(this.maxNumber - this.minNumber + 1) + this.minNumber;
counter++;
}
return generatedNumbers;
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个JUnit4测试,只是为了测试它的输出,我有这个:
@Test
public void testGenerateNumbers() {
assertEquals(this.simulator.generateNumbers(1), 2);
}
Run Code Online (Sandbox Code Playgroud)
现在,这显然返回false,期望值为<[I @ 6f1d0b1>.为什么我得到一个位置而不是实际的数组?任何帮助将不胜感激...顺便说一句,我们必须使用assertEquals,所以其他任何东西都是不可能的,是的,我知道使用其他东西来测试这个更容易.