Пространственная сложность - это математическая мера объема памяти, необходимого вашему алгоритму / функции / программе для хранения его переменных. Точно так же, как сложность времени - это мера того, сколько времени нужно для выполнения вашей функции.
Чтобы быстро ответить на ваш вопрос: Вы не можете получить его с помощью любой функции JS. Это то, что вы должны «рассчитать». В вашем алгоритме с использованием двух массивов сложность пространства будет равна O(n)
.
Если вы хотите узнать немного больше о сложности космоса: в мире компьютерных наук сложность космоса использует нотацию «большого О» (O(something)
). И это то, что вы узнаете, проанализировав свою функцию. Обычно, принимая «длинный жесткий взгляд» на ваш код
Например, эта функция:
function add(x,y) { return x+y; }
Имеет космическую сложность O(1)
. Потому что он использует две переменные для хранения своих данных: x
и y
. Технически, вы используете два"места" в вашей памяти. Вопрос в том, что если вы используете два места, почему сложность составляет O(1)
? Ответ заключается в том, что сложность выражается в «масштабе». Это означает, что если вашей функции для запуска нужны 1, 2, 3, ... 5 переменных, мы все еще говорим о «единицах» или константах. Поэтому O(1)
или "постоянная сложность".
Другой пример:
function sum(arr, n) {
var sum = 0;
for(var i=0; i<n; i++) {
sum += arr[i];
}
}
В этом случае пространственная сложность этой функции составляет O(N)
Почему? Потому что мы используем массив определенной длины. Этот массив может иметь длину 3, но он также может хранить 100 000 значений. Поскольку мы здесь не говорим только об «одних» (или мы не можем быть уверены, что это будет всего лишь несколько значений), ребята из информатики решили, что мы будем обозначать ее как O(N)
или «линейную сложность».
И так далее, и тому подобное. Например, если вам понадобится двумерный массив в вашей программе, он, вероятно, будет иметь O(N^2)
или «квадратичную сложность». В некоторых случаях вы можете столкнуться с программами с логарифмическими и (возможно, не) "экспоненциальными" космическими сложностями O(log N)
или 2^O(N)
.
Подробнее об этом здесь , здесь и здесь (речь идет о временной сложности, но мера та же)