BenderIsGreat34
@BenderIsGreat34
junior front-end

Приведите пример константного алгоритма?

Нашёл пример константного алгоритма, но не совсем понимаю, как в данном примере алгоритм не зависит от входных данных
public int GetCount(int[] items) {
    return items.Length;
}

т.е скорость работы в данном случае зависит напрямую от количества элементов в массиве items, почему же тогда в данном случае это рассматривается как константный алгоритм 0(1).
Если можно, приведите ещё пример дополнительный.
  • Вопрос задан
  • 239 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Оценка сложности алгоритма O() - это то, как меняется время вполнения алгоритма от изменения объёма обрабатываемых этим алгоритмом данных.
O(1) - время не зависит от объёма данных.
O(n) - время растёт пропорционально объёму данных.
O(n2) - время растёт пропорционально квадрату объёма данных.
и т.д.

Получение длины строки может иметь разную сложность в зависимости от языка программирования. Если используется хранение строк с префиксом длины, как в Паскале, то сложность будет O(1), так как достаточно только прочитать хранящееся значение. Если же строка хранится как в C/C++, с нулевым байтом в конце, то сложность будет O(n), так как надо в цикле перебрать все байты строки, пока не найдём ноль.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
O(1)
const items = {
  foo: 1,
  bar: 2,
}

function getValueByKey(key) {
  return items[key];
}


O(n)
const items = [
  { key: 'foo', value: 1 },
  { key: 'bar', value: 2 },
]

function getValueByKey(key) {
  for (let i = 0; i < items.length; i++) {
    const item = items[i];

    if (item.key === key) {
      return item.value;
    }
  }
}
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
скорость работы в данном случае зависит напрямую от количества элементов в массиве items,


C чего вы взяли? какая разница в скорости будет если length = 1 и length = 1000000?
Алгоритм в примере просто берет значение из переменной Length и возвращает его.
"Взять значение переменной" всегда одно и то же действие. И сложность этого действия - одинаковая.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы