Оценка сложности алгоритма
Оценка сложности алгоритма представляет собой способ определения скорости выполнения алгоритма в зависимости от размера входных данных. Обычно сложность алгоритма измеряется с учетом времени выполнения (временная сложность) и использования ресурсов (пространственная сложность).
Временная сложность алгоритма определяет сколько времени потребуется на выполнение алгоритма в зависимости от размера входных данных. Временная сложность обычно выражается в "O-нотации". Например, алгоритм с временной сложностью O(n) будет иметь линейную зависимость от размера входных данных n.
Пространственная сложность алгоритма определяет сколько памяти потребуется на выполнение алгоритма в зависимости от размера входных данных. Например, алгоритм с пространственной сложностью O(n) будет занимать память пропорционально размеру входных данных n.
Оценка сложности алгоритма позволяет оценить эффективность алгоритма и выбрать наиболее подходящий под конкретную задачу.
#теория
Оценка сложности алгоритма представляет собой способ определения скорости выполнения алгоритма в зависимости от размера входных данных. Обычно сложность алгоритма измеряется с учетом времени выполнения (временная сложность) и использования ресурсов (пространственная сложность).
Временная сложность алгоритма определяет сколько времени потребуется на выполнение алгоритма в зависимости от размера входных данных. Временная сложность обычно выражается в "O-нотации". Например, алгоритм с временной сложностью O(n) будет иметь линейную зависимость от размера входных данных n.
Пространственная сложность алгоритма определяет сколько памяти потребуется на выполнение алгоритма в зависимости от размера входных данных. Например, алгоритм с пространственной сложностью O(n) будет занимать память пропорционально размеру входных данных n.
Оценка сложности алгоритма позволяет оценить эффективность алгоритма и выбрать наиболее подходящий под конкретную задачу.
#теория
🤓2👍1
Сортировка пузырьком
Самый простой и известный способ сортировки элементов массива. Вместе с этим это самый неэффективный алгоритм, на выполнение которого уходит много времени.
Временная сложность = O(n²).
В наихудшем случае внутренний цикл работает не менее n раз. Поэтому операция займет не менее n² времени.
Пространственная сложность = O(1).
Дополнительная память не используется, потому что происходит обмен элементов в исходном массиве
#алгоритмы
Самый простой и известный способ сортировки элементов массива. Вместе с этим это самый неэффективный алгоритм, на выполнение которого уходит много времени.
Временная сложность = O(n²).
В наихудшем случае внутренний цикл работает не менее n раз. Поэтому операция займет не менее n² времени.
Пространственная сложность = O(1).
Дополнительная память не используется, потому что происходит обмен элементов в исходном массиве
#алгоритмы
Книга: "Знакомство с Python (Дэн Бейдер)"
Лаконичное руководство по Python от автора книги "Чистый Python" и проекта RealPython. Хорошее и плавное погружение в Питон с разбором полезных библиотек: включая обработку CSV файлов, установку пакетов с помощью pip, работу с PDF, знакомство с базами данных, парсинг сайтов, научные вычисления в NumPy и создание приложений с графическим интерфейсом.
Книга не сильно глубокая, но как старт в программирование на Python вполне хороша.
#книги
Лаконичное руководство по Python от автора книги "Чистый Python" и проекта RealPython. Хорошее и плавное погружение в Питон с разбором полезных библиотек: включая обработку CSV файлов, установку пакетов с помощью pip, работу с PDF, знакомство с базами данных, парсинг сайтов, научные вычисления в NumPy и создание приложений с графическим интерфейсом.
Книга не сильно глубокая, но как старт в программирование на Python вполне хороша.
#книги
Метод string.count()
Метод count для строк возвращает количество непересекающихся совпадений. При необходимости, можно установить начальную и конечную позиции поиска, используя аргументы start и end. Обратите внимание: метод чувствителен к регистру.
#практика
Метод count для строк возвращает количество непересекающихся совпадений. При необходимости, можно установить начальную и конечную позиции поиска, используя аргументы start и end. Обратите внимание: метод чувствителен к регистру.
#практика
Сегодня отмечается день рождения одного из самых популярных и универсальных языков программирования - Python! Этот язык был разработан Гвидо ван Россумом и впервые выпущен 20 февраля 1991 года. С тех пор Python завоевал огромную популярность благодаря своей простоте, гибкости и множеству библиотек для различных задач. Он используется во многих областях, включая разработку веб-приложений, анализ данных, искусственный интеллект, машинное обучение и многое другое. Поздравляем язык Python с его днем рождения и благодарим его создателя и сообщество разработчиков за их труд и вклад в мир программирования! 🎉🎂🐍
❤4
Функция zip()
Функция zip() объединяет элементы из двух или более итерируемых объектов в кортежи. Эти кортежи могут быть использованы для одновременного перебора последовательности, создания словарей, сортировки нескольких связанных между собой списков. Результатом вызова zip() является итератор кортежей, где i-й кортеж содержит i-й элемент из каждой последовательности.
Обратите внимание, что если объекты имеют разную длину, итерация происходит по минимальной длине из всех объектов.
#практика
Функция zip() объединяет элементы из двух или более итерируемых объектов в кортежи. Эти кортежи могут быть использованы для одновременного перебора последовательности, создания словарей, сортировки нескольких связанных между собой списков. Результатом вызова zip() является итератор кортежей, где i-й кортеж содержит i-й элемент из каждой последовательности.
Обратите внимание, что если объекты имеют разную длину, итерация происходит по минимальной длине из всех объектов.
#практика
Функция range()
Функция range() возвращает итератор – объекта класса range, содержащий целые числа в указанном диапазоне. Если функции передается только один аргумент (stop), то возвращается последовательность чисел, начиная с 0 и заканчивая указанным числом, но не включая его. Если в функцию передаются два аргумента (start, stop), то возвращается последовательность чисел, начиная с числа start и заканчивая числом stop, но не включая его. Третий аргумент функции – это шаг последовательности, по умолчанию 1.
#практика
Функция range() возвращает итератор – объекта класса range, содержащий целые числа в указанном диапазоне. Если функции передается только один аргумент (stop), то возвращается последовательность чисел, начиная с 0 и заканчивая указанным числом, но не включая его. Если в функцию передаются два аргумента (start, stop), то возвращается последовательность чисел, начиная с числа start и заканчивая числом stop, но не включая его. Третий аргумент функции – это шаг последовательности, по умолчанию 1.
#практика
Алгоритм Евклида
Алгоритм Евклида — это эффективный алгоритм для нахождения наибольшего общего делителя двух целых чисел путем последовательных вычитаний одного числа из другого. Метод состоит в том, чтобы последовательно вычитать меньшее число из большего до тех пор, пока они не станут равны друг другу. Этот метод основан на том факте, что НОД(a, b) = НОД(b, a-b) для любых натуральных чисел a и b.
Записанный в таком виде алгоритм неэффективен, так как многократно использует вычитания. Чтобы оптимизировать алгоритм необходимо заменить операцию вычитания на взятие остатка.
#алгоритмы
Алгоритм Евклида — это эффективный алгоритм для нахождения наибольшего общего делителя двух целых чисел путем последовательных вычитаний одного числа из другого. Метод состоит в том, чтобы последовательно вычитать меньшее число из большего до тех пор, пока они не станут равны друг другу. Этот метод основан на том факте, что НОД(a, b) = НОД(b, a-b) для любых натуральных чисел a и b.
Пример:
Найти НОД для a = 24 и b = 18
24 - 18 = 6
a = 6 и b = 18
18 - 6 = 12
a = 6 и b = 12
12 - 6 = 6
a = 6 и b = 6
Ответ: 6
Записанный в таком виде алгоритм неэффективен, так как многократно использует вычитания. Чтобы оптимизировать алгоритм необходимо заменить операцию вычитания на взятие остатка.
#алгоритмы
Модуль math: округление
Модуль math предоставляет несколько функций для округления чисел. Функция floor() округляет число в меньшую сторону. Функция ceil() округляет число в большую сторону. Функция trunc() отбрасывает дробную часть числа.
#практика
Модуль math предоставляет несколько функций для округления чисел. Функция floor() округляет число в меньшую сторону. Функция ceil() округляет число в большую сторону. Функция trunc() отбрасывает дробную часть числа.
#практика
Функции chr() и ord()
Функция chr() принимает целое число в качестве аргумента и возвращает символ, соответствующий этому числу в таблице символов Unicode.
Функция ord() принимает символ в качестве аргумента и возвращает соответствующее ему целое число в таблице символов Unicode.
#практика
Функция chr() принимает целое число в качестве аргумента и возвращает символ, соответствующий этому числу в таблице символов Unicode.
Функция ord() принимает символ в качестве аргумента и возвращает соответствующее ему целое число в таблице символов Unicode.
#практика
👍2
Функция repr()
Функция repr() возвращает строку, которая представляет печатаемое формальное представление объекта. Внутренне функция вызывает метод
👉 Читать статью
#статьи
Функция repr() возвращает строку, которая представляет печатаемое формальное представление объекта. Внутренне функция вызывает метод
__repr__
передаваемого объекта. Подробнее об использовании этой функции можно прочитать в статье.👉 Читать статью
#статьи
Класс datetime: метод now()
Метод now() класса datetime возвращает объект класса datetime с текущей локальной датой и временем (на устройстве) .
#практика
Метод now() класса datetime возвращает объект класса datetime с текущей локальной датой и временем (на устройстве) .
#практика
Красивая визуализация ошибок
Программистам важны хорошие сообщения об ошибках, поскольку они помогают лучше понимать что произошло в программе, а также быстрее и эффективнее исправлять проблемы.
Библиотека
Установка:
#практика
Программистам важны хорошие сообщения об ошибках, поскольку они помогают лучше понимать что произошло в программе, а также быстрее и эффективнее исправлять проблемы.
Библиотека
rich.traceback
предоставляет улучшенный и красивый способ отображения сообщений об ошибках. Она позволяет добавить цветовую разметку, форматирование, отображение локальных переменных, трассировку стека ошибки и другие улучшения, улучшающие визуальное представление ошибок. Это делает процесс отладки более эффективным и приятным.Установка:
pip install rich
#практика
🔥3
Модуль collections: класс Counter
Класс Counter() из модуля collections - это подкласс словаря dict, который используется для удобного и быстрого подсчета количества хешируемых объектов (неизменяемых, таких как числа, строки, кортежи), хранимых в последовательностях. Коллекция Counter хранит элементы как ключи, а их количества как значения.
#типы_данных
Класс Counter() из модуля collections - это подкласс словаря dict, который используется для удобного и быстрого подсчета количества хешируемых объектов (неизменяемых, таких как числа, строки, кортежи), хранимых в последовательностях. Коллекция Counter хранит элементы как ключи, а их количества как значения.
#типы_данных
Множество
Множество — это изменяемая неупорядоченная коллекция, которая содержит только уникальные элементы. В множество могут входить элементы различных типов, но они должны быть хэшируемыми объектами.
Функция set() — формирует множество. При создании удаляются все повторяющиеся элементы.
Чаще всего множества используются для проверки на принадлежность, удаления дубликатов из последовательности и выполнения математических операций, таких как пересечение, объединение, разность и симметрическая разность.
Проверка членства в множестве происходит гораздо быстрее, чем в списке: в списке это займет O(n) или O(log n) для отсортированного списка, тогда как в множестве это всегда O(1).
#типы_данных
Множество — это изменяемая неупорядоченная коллекция, которая содержит только уникальные элементы. В множество могут входить элементы различных типов, но они должны быть хэшируемыми объектами.
Функция set() — формирует множество. При создании удаляются все повторяющиеся элементы.
Чаще всего множества используются для проверки на принадлежность, удаления дубликатов из последовательности и выполнения математических операций, таких как пересечение, объединение, разность и симметрическая разность.
Проверка членства в множестве происходит гораздо быстрее, чем в списке: в списке это займет O(n) или O(log n) для отсортированного списка, тогда как в множестве это всегда O(1).
#типы_данных