算法的运行时间取决于数组的长度吗? 我知道如果数组的长度未知,我们会说以下算法的运行时间是 O(n)。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Size of array: ");
int lengthOfArray = sc.nextInt();
int[] longArray = new int[lengthOfArray];
for (int i = 0; i < longArray.length; i++) {
System.out.println("Hello" + i);
}
}
但是,如果数组的长度已知且固定。它会被视为常数时间,即 O(1) 还是仍然被视为 O(n)。
public static void main(String[] args) {
int[] longArray = new int[99];
for (int i = 0; i < longArray.length; i++) {
System.out.println("Hello" + i);
}
}
最佳答案
在您的情况下,算法的复杂度将是一个常数。这是因为复杂性始终是相同的。 (请参阅我使用复杂性而不是运行时间,因为实际上存在差异)。
对于一个未知的循环来说,它的复杂度是 O(n),因为任务根据 n 的不同而变化(对于 100 万条记录可能会更复杂,而对于 5 条记录则不太复杂)。但它仍然是线性复杂度。
如果我们知道长度 n=5,那么它就变成了 O(5),基本上是 5*O(1),并且由于不考虑常数,所以它的复杂度变成了 O(1)。
这并不意味着如果您知道元素的数量,程序的运行时间就会减少。这意味着运行时间将是一个常数(因为复杂度是常数)。
关于java - 固定大小的长数组的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000039/