Как рассчитать сложность? - PullRequest
       3

Как рассчитать сложность?

0 голосов
/ 11 февраля 2011

Я новичок в алгоритмах и не знаю, как вычислить сложность.

Example:
int x=10,y;
y = x;

Какова сложность в приведенном выше примере?

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

В обозначении Big O это соответствует O(1), что в основном означает, что время выполнения операции является постоянным или, по крайней мере, меньше определенной константы.Ergo, время выполнения не зависит от вашего ввода.Как вы можете понять из того, что я написал, обозначение Big O дает только верхнюю границу операции.Есть также другие обозначения, которые дают нижнюю границу и т. Д.

Примером случая, когда он зависит от ввода, может быть:

int res = 0;
int[] arr = getSomeArray();
foreach (int i in arr)
    res = res + i;

Здесь время выполнениязависит от того, насколько велик массив, и если мы дадим длину массива переменной n, то это будет O(n).Опять же, нотация Big O не указывает точно, сколько времени потребуется для выполнения, но в этом случае просто говорит, что мы можем умножить n на некоторую константу, и тогда она будет завершена в течение n*some s.

Более подробное объяснение дано здесь: Что такое простое английское объяснение нотации "Big O"?

2 голосов
/ 11 февраля 2011

Это должно быть O (1), если вы ссылаетесь на O-нотацию.

...