Сложность времени с циклами while
Я не совсем уверен, понимаю ли я расчеты временной сложности. Мне даны эти петли, и это мои расчеты. Тем не менее, я не уверен, что сказать о больших O здесь.
Петля 1:
lst = [] i=1 while i<n: lst = list(range(i)) i *= 2
Я предполагаю, что каждая операция занимает O (1) раз. В этом цикле 1-я строка и вторая строка выполняются 1 раз каждый. Первая строка цикла while содержит 3 операции – диапазон, список и назначение этого значения в lst. Поскольку мы имеем дело с диапазоном, я предполагаю, что он работает n + 1 раз.
Последняя строка цикла имеет 2 операции: умножение на 2 и присвоение этого значения i, и выполняется n раз.
Из этого я думаю, что общее число будет: 1 + 1 + 3 (n + 1) + 2n = 5n + 5.
Так как это линейная функция, то большой O будет O (n)?
===============
Петля 2:
lst = [] i=1 while i<n: lst = lst + [i] i *= 2
Здесь мы имеем аналогичный случай, однако первая строка цикла while имеет 2 операции. Затем,
1 + 1 + 2n + 2n = 4n + 2.
Так как это линейная функция, это тоже O (n)?
========================== Цикл 3:
lst = [] i=1 while i<n: lst += [i] i *= 2
Я думаю, что lst + = [i] будет выполнять 2 операции 2 раза, так как это вычисление на месте? Я не уверен в этом. Если это правильно, то общая сумма будет равна 6n + 2
Вопросы: я исчисляю эти права, или я совершенно не прав? Как написать большие O для каждого из этих циклов?
- почему мой кезерный шифр печатает только последнюю букву строки? питон
- Быстрый алгоритм обнаружения основных цветов в изображении?
- Действительно ли эта основная функция работает?
- Алгоритм определения того, какое число в списке суммируется до определенного числа
- Как улучшить эффективность алгоритма перестановок с помощью python
LOOP 1: O (n log n)
Loop запускает log2 (n) раз, его среднее значение O (log n). каждая итерация делает (в худшем случае) n действий. поэтому сложность O (n log n).
LOOP 2: O (log n)
Loop запускает log2 (n) раз, его среднее значение O (log n). Я полагаю, что назначение lst = lst + [i]
просто добавляет узел (и не создает новый список). его среднее значение O (1), поэтому сложность O (log n). Если я ошибаюсь , назначение создает новый список, поэтому каждая итерация выполняет (в худшем случае) n действий. поэтому сложность O (n log n)
LOOP 3: O (log n)
Как и в цикле 2. Здесь назначение O (1) наверняка, а не предположение …
- выбор рабочего стола Tkinter.Tk () открывает новое окно
- Python-twitter api.VerifyCredentials () не возвращает ни одного
- Правильно ли используется алгоритм проверки правильности Рабина-Миллера с использованием модульной квадратуры?
- как я могу запрограммировать большое количество циклов
- Алгоритм Варшаши для транзитивного закрытия (Python)
- Создание простого линейного чертежа на основе алгоритма
- Как улучшить алгоритм удаления дубликатов?
- Планирование маршрута для нескольких роботов одновременно
- алгоритм глубины в python не работает
- Попытка реализовать кеш при загрузке этого файла
- Могу ли я использовать алгоритм K-средних в строке?