@gitdev

Какая сложность данного алгоритма?

Получаем данные с сервера используя HTTP запрос, если лимит выполнения превышен – отправляем еще один запрос, но не более 10 запросов.
private function getBook(string $slug): ?array
    {
        try {
            $reward = $this->http->get(self::url . $slug);

            $this->retries = 0;
          
            return $reward;
        } catch (//Ловим исключение) {
            if (//если лимит превышен - более 10 раз выходим из цыкла) {
                //выход из цыкла
            }
            if (//если нужно нам исключения) {
                //спим
                ++$this->retries;

                return $this->getBook($slug);
            }
        }

        return null;
    }
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Сложность: простой.

Если вам нужна ассимптотическая временная сложность - то O(n).
Эта сложность меряется в зависимости от размера входных данных. Какие у вас входные данные-то? Строка slug, url.

Эти данные конкатенируются (O(n)) и передаются библиотеке. До 10 раз. Библиотека их парсит, делает dns запрос, открывает сетевое подключение к web серверу, получает данные, парсит ответ. Там тоже есть линейная, видимо, зависимость от длины строки. Ее надо распарсить, записать в сетевой сокет и так далее. Вот получение данных по уже установленному http соединению от длины строки не зависит, поэтому в сложности алгоритма не учавствует.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы