Может кто-нибудь объяснить, почему сложность пространства здесь O (1) и O (n) для следующего кода? - PullRequest
0 голосов
/ 27 апреля 2020

Может ли кто-нибудь объяснить мне, почему следующий фрагмент кода занимает пространство O (1)?

public static void sayHiNTimes(int n) {
    for (int i = 0; i < n; i++) {
        System.out.println("hi");
    }
}

и почему этот следующий фрагмент кода занимает пространство O (n)?

public static String[] arrayOfHiNTimes(int n) {
    String[] hiArray = new String[n];
    for (int i = 0; i < n; i++) {
        hiArray[i] = "hi";
    }
    return hiArray;
}

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Речь идет о космической сложности. Как и в первой программе, он использует только фиксированное и постоянное количество переменных, поэтому он занимает \Theta(1) пробел.

Для второго кода, так как он выделяет массив размером n, его космическая сложность \Theta(n).

0 голосов
/ 27 апреля 2020

Пробел означает, что память занимает ваш код массива, во втором - массив размером n, тогда как в предыдущем случае передается только целое число, следовательно, постоянная сложность пространства

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...