java - 固定大小的长数组的运行时间

标签 java time big-o

算法的运行时间取决于数组的长度吗? 我知道如果数组的长度未知,我们会说以下算法的运行时间是 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/

相关文章:

java - 如何在LevelDB中存储关联实体列表

Python 2.x - Windows 上的 QueryPerformanceCounter()

javascript - 如何在java脚本中检查时间是否小于或等于特定小时

data-structures - 为什么在二叉搜索树中查找是 O(log(n))?

algorithm - T(n-1) 的时间复杂度

java - 在导出时合并多个 jasper 报告时如何重新计算页码?

java - Android AlertDialog 关闭方法不起作用

algorithm - f(n) = n^4 + 100n^2 + 50 的上限是多少?

java - 如果我在多线程服务器程序中运行并行代码会发生什么?

c++ - 你如何在c/c++中顺序创建伪随机数?