Навигация по каналу
Мы рады приветствовать вас в самом перспективном, полезном и ламповом канале по Python в русскоязычном телеграме!
Категории постов:
🎓 Общие уроки по Python - #learning_python
🎓 Уроки по алгоритмам - #algorithms
🎓 Уроки по Django - #learning_django
💬 Софт скиллы - #soft_skills
👋🏻 Сообщения от админов - #appeal
💬 Чат - https://t.me/+LPCexrouSTI1ODk6
Другие проекты No_Panic:
✅ Interview_No_Panic - канал по собеседованиям
✅ Java_No_Panic - канал по языку программирования Java
✅ Memes_No_Panic - канал с мемами на английском
✅ Stickers_No_Panic - авторский стикерпак
Мы рады приветствовать вас в самом перспективном, полезном и ламповом канале по Python в русскоязычном телеграме!
Категории постов:
🎓 Общие уроки по Python - #learning_python
🎓 Уроки по алгоритмам - #algorithms
🎓 Уроки по Django - #learning_django
💬 Софт скиллы - #soft_skills
👋🏻 Сообщения от админов - #appeal
💬 Чат - https://t.me/+LPCexrouSTI1ODk6
Другие проекты No_Panic:
✅ Interview_No_Panic - канал по собеседованиям
✅ Java_No_Panic - канал по языку программирования Java
✅ Memes_No_Panic - канал с мемами на английском
✅ Stickers_No_Panic - авторский стикерпак
👍2
Что такое асинхронное программирование?
В прошлом посте мы с вами рассматривали, какие знания нужны крутому Python разработчику. Сегодня мы начинаем наш цикл постов об асинхронном программировании. Для начала разберемся, что это такое и чем этот подход отличается от синхронного выполнения кода.
В синхронном программировании методы написаны для выполнения одной задачи за раз. Если функция зависит от вывода другой функции, она должна дождаться завершения выполнения этой функции. Программа фактически останавливается до тех пор, пока функция не завершит свое выполнение. Это означает, что только одна операция может выполняться одновременно.
Это замедляет работу программы, поскольку она вынуждена останавливаться и ждать, пока что-то завершится. В программе есть много блоков, которые могли бы выполняться одновременно.
Чтобы исправить это нам понадобится познакомится с асинхронным программированием. Оно также выполняет одну операцию за раз, но вдет себя по другому. Программа может не дождаться завершения выполнения процесса, чтобы перейти к следующему шагу.
Это означает, что процессор нашего компьютера и сама программа не ждет выполнения только одной конкретной операции, которая выполняется в другой среде, например запрос к API, наш процессор может начать выполнение другой части программы, в то время как предыдущая еще не завершена и все еще выполняется в другом месте.
Надеемся вам понравился наш пост, если у вас есть какие-то предложения или исправления, то не стесняйтесь их писать в комментариях.
#learning_python
В прошлом посте мы с вами рассматривали, какие знания нужны крутому Python разработчику. Сегодня мы начинаем наш цикл постов об асинхронном программировании. Для начала разберемся, что это такое и чем этот подход отличается от синхронного выполнения кода.
В синхронном программировании методы написаны для выполнения одной задачи за раз. Если функция зависит от вывода другой функции, она должна дождаться завершения выполнения этой функции. Программа фактически останавливается до тех пор, пока функция не завершит свое выполнение. Это означает, что только одна операция может выполняться одновременно.
Это замедляет работу программы, поскольку она вынуждена останавливаться и ждать, пока что-то завершится. В программе есть много блоков, которые могли бы выполняться одновременно.
Чтобы исправить это нам понадобится познакомится с асинхронным программированием. Оно также выполняет одну операцию за раз, но вдет себя по другому. Программа может не дождаться завершения выполнения процесса, чтобы перейти к следующему шагу.
Это означает, что процессор нашего компьютера и сама программа не ждет выполнения только одной конкретной операции, которая выполняется в другой среде, например запрос к API, наш процессор может начать выполнение другой части программы, в то время как предыдущая еще не завершена и все еще выполняется в другом месте.
Надеемся вам понравился наш пост, если у вас есть какие-то предложения или исправления, то не стесняйтесь их писать в комментариях.
#learning_python
👍30🆒1
Как работать с асинхронными функциями в Python?
В прошлом посте мы с вами разобрались с тем, что такое асинхронное программирование, а сегодня взглянем уже на конкретные примеры кода.
Давайте сначала посмотрим на обычную функцию, а потом рассмотрим чем она отличается от асинхронной.
Чтобы создать асинхронную функцию мы как раз пишем ключевое слово
Также стоит обратить внимание на интересный метод «
Метод «
Ставьте свои реакции, если вам понравился этот пост. Пишите свои предложения и замечания в нашем чате и комментариях ниже.
Желаем вам хороших выходных, ваша команда Python_No_Panic!
#learning_python
В прошлом посте мы с вами разобрались с тем, что такое асинхронное программирование, а сегодня взглянем уже на конкретные примеры кода.
Давайте сначала посмотрим на обычную функцию, а потом рассмотрим чем она отличается от асинхронной.
def say_hello(name):А теперь взглянем на асинхронный код:
print(“Hello, “ + name)
import asyncioПервое, на что мы должны обратить внимание, это слово «
async def say_hello(name):
print("Hello, " + name)
async def join_channel(name):
for i in range(0, 10):
print("I want to join, " + name)
async def main():
task1 = asyncio.create_task(
join_channel("Python_No_Panic")
)
await say_hello("Python")
asyncio.run(main())
async». Оно появляется при импорте библиотеки «asyncio», которая позволяет нам как раз работать с асинхронными функциями. Чтобы создать асинхронную функцию мы как раз пишем ключевое слово
«async».
Надо учитывать, что просто асинхронную функцию вызывать мы не сможем. Для вызова асинхронной функции нам понадобиться ключевое слово «await».Также стоит обратить внимание на интересный метод «
create_task». Он предоставляет инструмент для запланированного coroutine (функции с ключевым словом «async»), который асинхронная программа может запрашивать и использовать для взаимодействия с coroutine(функции с ключевым словом «async»).Метод «
run» мы используем для запуска асинхронного процесса. То-есть это будет начальной точкой для запуска нашей асинхронной программы.Ставьте свои реакции, если вам понравился этот пост. Пишите свои предложения и замечания в нашем чате и комментариях ниже.
Желаем вам хороших выходных, ваша команда Python_No_Panic!
#learning_python
👍26💯3👎2🤯1
Как повысить эффективность алгоритмов ч.1
Мы с вами уже начали говорить про алгоритмы, но мы совершено забыли обсудить их эффективность. В сегодняшнем посте мы не будем говорить о том, как измерять эффективность алгоритма, но поговорим о том, как его улучшить. Мы разделили наш пост на две части, чтобы вам было удобнее читать и использовать наш материал.
✅ Для того, чтобы сделать ваш алгоритм более быстрым и эффективным, вы можете выполнить следующие действия:
✅ Оптимизируйте сам алгоритм. Ищите способы упростить логику алгоритма, чтобы уменьшить количество шагов, необходимых для его выполнения.
✅ Используйте более эффективные структуры данных. Рассмотрите возможность использования структур данных, оптимизированных для определенного типа выполняемых операций.
✅ Распараллелить алгоритм. Если алгоритм можно разделить на более мелкие независимые задачи, рассмотрите возможность одновременного запуска этих задач на нескольких процессорах или компьютерах.
Надеемся, что вы нашли для себя полезные шаги для оптимизации ваших алгоритмов. В следующем посте мы обсудим новые методики для улучшения ваших алгоритмов.
Поддержите нас реакцией, ваша обратная связь очень важна для нас.
Всем отличного и продуктивного дня!
#learning_python #algorithms
Мы с вами уже начали говорить про алгоритмы, но мы совершено забыли обсудить их эффективность. В сегодняшнем посте мы не будем говорить о том, как измерять эффективность алгоритма, но поговорим о том, как его улучшить. Мы разделили наш пост на две части, чтобы вам было удобнее читать и использовать наш материал.
✅ Для того, чтобы сделать ваш алгоритм более быстрым и эффективным, вы можете выполнить следующие действия:
✅ Оптимизируйте сам алгоритм. Ищите способы упростить логику алгоритма, чтобы уменьшить количество шагов, необходимых для его выполнения.
✅ Используйте более эффективные структуры данных. Рассмотрите возможность использования структур данных, оптимизированных для определенного типа выполняемых операций.
✅ Распараллелить алгоритм. Если алгоритм можно разделить на более мелкие независимые задачи, рассмотрите возможность одновременного запуска этих задач на нескольких процессорах или компьютерах.
Надеемся, что вы нашли для себя полезные шаги для оптимизации ваших алгоритмов. В следующем посте мы обсудим новые методики для улучшения ваших алгоритмов.
Поддержите нас реакцией, ваша обратная связь очень важна для нас.
Всем отличного и продуктивного дня!
#learning_python #algorithms
🔥7💯2👍1
Поговорим про Django
Django — это высокоуровневая веб-инфраструктура Python, которая позволяет быстро разрабатывать безопасные и удобные в обслуживании веб-сайты. Фреймворк следует архитектурному шаблону модель-шаблон-представление и предоставляет полнофункциональную структуру для создания динамических веб-сайтов и веб-приложений.
Вот некоторые из ключевых особенностей Django:
✅ Маршрутизация URL-адресов — Django позволяет вам сопоставлять URL-адреса с представлениями чистым и организованным способом.
✅ Объектно-реляционное сопоставление (ORM) — платформа предоставляет высокоуровневый API базы данных, который упрощает взаимодействие с вашими базами данных с помощью кода Python.
✅ Встроенная панель администратора. Django поставляется со встроенной панелью администратора, которая предоставляет веб-интерфейс для управления данными приложения.
✅ Безопасность. Django имеет ряд встроенных функций безопасности, таких как защита от межсайтового скриптинга (XSS), подделки межсайтовых запросов (CSRF) и атак путем внедрения SQL.
✅ Модульный дизайн. Django имеет модульный дизайн, который упрощает повторное использование кода и расширение существующей функциональности.
В целом, Django — это мощная и гибкая веб-инфраструктура, которая упрощает создание надежных и масштабируемых веб-приложений.
Надеемся, мы смогли вам помочь разобраться в том, что такое Django, и с чем его едят. В следующих постах мы начнем разбирать этот фреймворк более подробно.
Всем прекрасного дня!
#learning_python #learning_django
Django — это высокоуровневая веб-инфраструктура Python, которая позволяет быстро разрабатывать безопасные и удобные в обслуживании веб-сайты. Фреймворк следует архитектурному шаблону модель-шаблон-представление и предоставляет полнофункциональную структуру для создания динамических веб-сайтов и веб-приложений.
Вот некоторые из ключевых особенностей Django:
✅ Маршрутизация URL-адресов — Django позволяет вам сопоставлять URL-адреса с представлениями чистым и организованным способом.
✅ Объектно-реляционное сопоставление (ORM) — платформа предоставляет высокоуровневый API базы данных, который упрощает взаимодействие с вашими базами данных с помощью кода Python.
✅ Встроенная панель администратора. Django поставляется со встроенной панелью администратора, которая предоставляет веб-интерфейс для управления данными приложения.
✅ Безопасность. Django имеет ряд встроенных функций безопасности, таких как защита от межсайтового скриптинга (XSS), подделки межсайтовых запросов (CSRF) и атак путем внедрения SQL.
✅ Модульный дизайн. Django имеет модульный дизайн, который упрощает повторное использование кода и расширение существующей функциональности.
В целом, Django — это мощная и гибкая веб-инфраструктура, которая упрощает создание надежных и масштабируемых веб-приложений.
Надеемся, мы смогли вам помочь разобраться в том, что такое Django, и с чем его едят. В следующих постах мы начнем разбирать этот фреймворк более подробно.
Всем прекрасного дня!
#learning_python #learning_django
🔥8❤1
Как повысить эффективность алгоритма ч.2
Всем привет! В прошлом посте мы говорили про Django, а сегодня вернемся к беседе об увеличении эффективности наших алгоритмов. Как вы помните, от эффективности наших алгоритмов будет зависеть работа и быстродействие нашей программы. Во второй части мы добавили несколько пунктов к уже имеющимся, а именно:
✅ Использование кэширования или запоминания. Храните результаты дорогостоящих вычислений в памяти, чтобы их не приходилось пересчитывать каждый раз при запуске алгоритма.
✅ Уменьшение размера входных данных. Если возможно, попробуйте уменьшить размер набора входных данных, чтобы ускорить вычисления.
✅ Предварительная обработка. При необходимости рассмотрите возможность выполнения любой необходимой предварительной обработки перед запуском основного алгоритма, чтобы уменьшить объем работы, которую он должен выполнить.
✅ Профилирование кода. Используйте инструменты профилирования, чтобы выявить узкие места в коде и сосредоточить на них усилия по оптимизации.
Надеемся, вы будете учитывать изложенные выше практики в своей работе. Мы желаем вам написания только эффективных программ и быстрых алгоритмов.
Всем отличного настроения!
#learning_python #algorithms
Всем привет! В прошлом посте мы говорили про Django, а сегодня вернемся к беседе об увеличении эффективности наших алгоритмов. Как вы помните, от эффективности наших алгоритмов будет зависеть работа и быстродействие нашей программы. Во второй части мы добавили несколько пунктов к уже имеющимся, а именно:
✅ Использование кэширования или запоминания. Храните результаты дорогостоящих вычислений в памяти, чтобы их не приходилось пересчитывать каждый раз при запуске алгоритма.
✅ Уменьшение размера входных данных. Если возможно, попробуйте уменьшить размер набора входных данных, чтобы ускорить вычисления.
✅ Предварительная обработка. При необходимости рассмотрите возможность выполнения любой необходимой предварительной обработки перед запуском основного алгоритма, чтобы уменьшить объем работы, которую он должен выполнить.
✅ Профилирование кода. Используйте инструменты профилирования, чтобы выявить узкие места в коде и сосредоточить на них усилия по оптимизации.
Надеемся, вы будете учитывать изложенные выше практики в своей работе. Мы желаем вам написания только эффективных программ и быстрых алгоритмов.
Всем отличного настроения!
#learning_python #algorithms
❤4
Что такое пузырьковая сортировка
В прошлом посте мы рассказали вам о такой важной теме как словари. А сегодня поговорим о чем-то более замысловатом, но в меру сложном. Мы вправду хотим подробно рассказать вам о том, как пройти техническое интервью не в самые простые компании. Наша задача состоит в том, чтобы помочь вам расти и быть вашим каналом-помощником в обучении. Так что надеемся, что этот пост будет для вам действительно полезен. А теперь к делу!
Пузырьковая сортировка — это простой алгоритм сортировки, который многократно проходит по списку, сравнивает соседние элементы и меняет их местами, если они расположены в неправильном порядке. Алгоритм получил свое название из-за того, что более мелкие элементы «всплывают» вверх списка. Вот реализация Python алгоритма пузырьковой сортировки выглядит следующим образом:
Анализ временной сложности:
Временная сложность алгоритма пузырьковой сортировки составляет O(n^2), где n — количество элементов в списке. Это связано с тем, что в худшем случае внутренний цикл будет выполняться n*(n-1) раз, что дает в общей сложности n^2 - n итераций.
Надеемся, что этот пост вам понравился и вы поддержите нашу работу лайком. Если у вас есть предложения или идеи для наших дальнейших постов, то мы готовы вас выслушать и работать как партнеры!
Отличного вам настроения!
#learning_python_algorithms
В прошлом посте мы рассказали вам о такой важной теме как словари. А сегодня поговорим о чем-то более замысловатом, но в меру сложном. Мы вправду хотим подробно рассказать вам о том, как пройти техническое интервью не в самые простые компании. Наша задача состоит в том, чтобы помочь вам расти и быть вашим каналом-помощником в обучении. Так что надеемся, что этот пост будет для вам действительно полезен. А теперь к делу!
Пузырьковая сортировка — это простой алгоритм сортировки, который многократно проходит по списку, сравнивает соседние элементы и меняет их местами, если они расположены в неправильном порядке. Алгоритм получил свое название из-за того, что более мелкие элементы «всплывают» вверх списка. Вот реализация Python алгоритма пузырьковой сортировки выглядит следующим образом:
def bubble_sort(arr):В приведенном выше коде arr — это список для сортировки, а n — длина списка. Внешний цикл для i в диапазоне (n) проходит через все элементы в массиве. Внутренний цикл для j в диапазоне (0, n-i-1) проходит через несортированную часть списка. Оператор if arr[j] > arr[j+1] проверяет, больше ли текущий элемент, чем следующий элемент, и если это так, то два элемента меняются местами.
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
Анализ временной сложности:
Временная сложность алгоритма пузырьковой сортировки составляет O(n^2), где n — количество элементов в списке. Это связано с тем, что в худшем случае внутренний цикл будет выполняться n*(n-1) раз, что дает в общей сложности n^2 - n итераций.
Надеемся, что этот пост вам понравился и вы поддержите нашу работу лайком. Если у вас есть предложения или идеи для наших дальнейших постов, то мы готовы вас выслушать и работать как партнеры!
Отличного вам настроения!
#learning_python_algorithms
👍17💯2🍌1
Реализация и анализ сортировки выбором
Всем привет! Совсем недавно мы говорили с вами про bubble sort - сортировку пузырьком. А теперь пришло время говорить о более быстрых алгоритмах, так как в прошлом посте мы выяснили, что сортировка пузырьком хоть и выполняет свою задачу, но делает это не очень эффективно. И так начнем:
Сортировка выбором — это простой алгоритм сортировки, который многократно находит минимальный элемент из несортированной части массива и помещает его в начало массива. Он работает, выбирая наименьший элемент и заменяя его элементом в текущей позиции, пока весь массив не будет отсортирован.
Вот реализация сортировки выбором в Python:
Временная сложность:
Временная сложность сортировки выбором O (n ^ 2)
Надеемся вам понравился наш разбор сортировки выбором. Если у вас есть какие-то предложение, то пишите их в комментариях. Также не забудьте поставить вашу реакцию на этот пост, ведь именно это мотивирует нас делать крутой контент.
Всем отличного дня!
#learning_python_algorithms
Всем привет! Совсем недавно мы говорили с вами про bubble sort - сортировку пузырьком. А теперь пришло время говорить о более быстрых алгоритмах, так как в прошлом посте мы выяснили, что сортировка пузырьком хоть и выполняет свою задачу, но делает это не очень эффективно. И так начнем:
Сортировка выбором — это простой алгоритм сортировки, который многократно находит минимальный элемент из несортированной части массива и помещает его в начало массива. Он работает, выбирая наименьший элемент и заменяя его элементом в текущей позиции, пока весь массив не будет отсортирован.
Вот реализация сортировки выбором в Python:
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
Внешний цикл проходит от 0 до n-1, где n — длина массива. На каждой итерации минимальный элемент находится из несортированной части массива (т. е. от i+1 до n-1) с помощью внутреннего цикла. Затем минимальный элемент заменяется элементом в текущей позиции (т. е. i).Временная сложность:
Временная сложность сортировки выбором O (n ^ 2)
Надеемся вам понравился наш разбор сортировки выбором. Если у вас есть какие-то предложение, то пишите их в комментариях. Также не забудьте поставить вашу реакцию на этот пост, ведь именно это мотивирует нас делать крутой контент.
Всем отличного дня!
#learning_python_algorithms
👍11❤3
Реализация и анализ Insertion Sort
Всем привет!
Мы продолжаем радовать вас контентом, который обычно заставляет нас боятся собеседований. Надеемся вы пытаетесь осмыслить все алгоритмы, которые мы тут с вами разбираем, ведь совсем скоро вступим в бой с задачками на лит код и будем устранять все пробелы в наших знаниях.
Если вы забыли про что мы говорили в предыдущем посте, то мы советуем освежить его в памяти, перейдя по этой ссылке. А теперь вернемся к нашим красивым алгоритмам :)
Сегодня разговор пойдет про insertion sort.
Алгоритм работает, перебирая массив и вставляя каждый элемент в правильное положение в отсортированной части массива.
Реализация алгоритма:
⚡️ Мы начинаем со второго элемента массива (i=1) и предполагаем, что первый элемент (i=0) уже отсортирован.
⚡️ Мы сохраняем текущий элемент в переменной с именем key.
⚡️ Мы сравниваем ключ с каждым предшествующим ему элементом (j=i-1), начиная с последнего элемента отсортированной части массива, и перемещаем все элементы, которые больше ключа, на одну позицию вправо.
⚡️ Мы вставляем ключ в правильное положение в отсортированной части массива, вставляя его после последнего элемента, который меньше или равен ключу.
⚡️ Мы повторяем этот процесс для каждого элемента массива.
Временная сложность:
O(n)
Надеемся вам нравится наш материал. Если у вас есть какие-то предложения или идеи, то не стесняйтесь их озвучивать в комментариях. Мы желаем вам успехов в изучении алгоритмов и суперского настроения!
#learning_python_algorithms
Всем привет!
Мы продолжаем радовать вас контентом, который обычно заставляет нас боятся собеседований. Надеемся вы пытаетесь осмыслить все алгоритмы, которые мы тут с вами разбираем, ведь совсем скоро вступим в бой с задачками на лит код и будем устранять все пробелы в наших знаниях.
Если вы забыли про что мы говорили в предыдущем посте, то мы советуем освежить его в памяти, перейдя по этой ссылке. А теперь вернемся к нашим красивым алгоритмам :)
Сегодня разговор пойдет про insertion sort.
Алгоритм работает, перебирая массив и вставляя каждый элемент в правильное положение в отсортированной части массива.
Реализация алгоритма:
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >= 0 and key < arr[j] :
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
Вот как работает алгоритм:⚡️ Мы начинаем со второго элемента массива (i=1) и предполагаем, что первый элемент (i=0) уже отсортирован.
⚡️ Мы сохраняем текущий элемент в переменной с именем key.
⚡️ Мы сравниваем ключ с каждым предшествующим ему элементом (j=i-1), начиная с последнего элемента отсортированной части массива, и перемещаем все элементы, которые больше ключа, на одну позицию вправо.
⚡️ Мы вставляем ключ в правильное положение в отсортированной части массива, вставляя его после последнего элемента, который меньше или равен ключу.
⚡️ Мы повторяем этот процесс для каждого элемента массива.
Временная сложность:
O(n)
Надеемся вам нравится наш материал. Если у вас есть какие-то предложения или идеи, то не стесняйтесь их озвучивать в комментариях. Мы желаем вам успехов в изучении алгоритмов и суперского настроения!
#learning_python_algorithms
❤5👍2💩2🆒2
Подход «divide-and-conquer» в программировании 💪
Всем привет! В прошлом посте мы говорили об Insertion Sort. А сегодня нам нужно двигаться дальше в нашей подготовке к собеседованию на крутую работу. Сегодня мы поговорим с вами про подходы в программировании. Начнем мы с подхода «разделяй и властвуй». И так давайте узнаем что это такое и зачем нам вообще знать про этот подход :) И так начнем!
Подход «разделяй и властвуй» — это стратегия решения проблем, которая включает в себя разбиение большой проблемы на более мелкие подзадачи, их независимое решение, а затем объединение решений для исходной проблемы.
Подход «разделяй и властвуй» работает путем рекурсивного разделения проблемы на более мелкие подзадачи до тех пор, пока они не станут достаточно простыми для непосредственного решения. Затем решения подзадач объединяются для получения решения исходной задачи. Ключевая идея этого подхода заключается в том, что если мы можем эффективно решить подзадачи, то мы также сможем эффективно решить исходную задачу.
Подход «разделяй и властвуй» используется во многих алгоритмах.
К примеру, в алгоритмах сортировки: Merge Sort and Quick Sort.
Или в алгоритмах поиска: Binary Search
А также в алгоритмах умножения матриц: Strassen's Algorithm.
Основные этапы подхода «разделяй и властвуй»:
👑 Разделите проблему на более мелкие подзадачи.
👑 Сделайте эффективное и правильное решение для подзадачи.
👑 Объедините решения подзадач, чтобы получить решение исходной задачи.
Подход «разделяй и властвуй» — это мощная техника решения проблем, которую можно использовать для эффективного решения многих сложных задач. Однако важно правильно выбирать подзадачи и верно комбинировать их решения, чтобы получить желаемый результат.
Надеемся вы узнали что-то новое из нашего поста. Оставляйте свои комментарии и реакции под этим материалом.
Всем отличного настроения и продолжения дня!
#learning_python_algorithms
Всем привет! В прошлом посте мы говорили об Insertion Sort. А сегодня нам нужно двигаться дальше в нашей подготовке к собеседованию на крутую работу. Сегодня мы поговорим с вами про подходы в программировании. Начнем мы с подхода «разделяй и властвуй». И так давайте узнаем что это такое и зачем нам вообще знать про этот подход :) И так начнем!
Подход «разделяй и властвуй» — это стратегия решения проблем, которая включает в себя разбиение большой проблемы на более мелкие подзадачи, их независимое решение, а затем объединение решений для исходной проблемы.
Подход «разделяй и властвуй» работает путем рекурсивного разделения проблемы на более мелкие подзадачи до тех пор, пока они не станут достаточно простыми для непосредственного решения. Затем решения подзадач объединяются для получения решения исходной задачи. Ключевая идея этого подхода заключается в том, что если мы можем эффективно решить подзадачи, то мы также сможем эффективно решить исходную задачу.
Подход «разделяй и властвуй» используется во многих алгоритмах.
К примеру, в алгоритмах сортировки: Merge Sort and Quick Sort.
Или в алгоритмах поиска: Binary Search
А также в алгоритмах умножения матриц: Strassen's Algorithm.
Основные этапы подхода «разделяй и властвуй»:
👑 Разделите проблему на более мелкие подзадачи.
👑 Сделайте эффективное и правильное решение для подзадачи.
👑 Объедините решения подзадач, чтобы получить решение исходной задачи.
Подход «разделяй и властвуй» — это мощная техника решения проблем, которую можно использовать для эффективного решения многих сложных задач. Однако важно правильно выбирать подзадачи и верно комбинировать их решения, чтобы получить желаемый результат.
Надеемся вы узнали что-то новое из нашего поста. Оставляйте свои комментарии и реакции под этим материалом.
Всем отличного настроения и продолжения дня!
#learning_python_algorithms
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Всем привет!
Сегодня мы поговорим про merge sort и проанализируем его.
Читайте этот пост, нажав на это предложение👍
#learning_python_algorithms
Сегодня мы поговорим про merge sort и проанализируем его.
Читайте этот пост, нажав на это предложение
#learning_python_algorithms
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
Реализация и анализ merge sort!
Всем привет! В прошлом посте мы с вами начали затрагивать важную тему как подходы в программировании. Конечно, нам еще предстоит со многим познакомиться, но увидеть применение подхода «divide-and-conquer» в алгоритмах сортировки мы сможем уже сегодня. Сегодня…
❤1👍1
Реализация и анализ алгоритма Quicksort❓
Всем привет!
В прошлом посте мы разбирали merge sort, а сегодня поговорим про один из самых крутых алгоритмов сортировки - quicksort. И так по нашей традиции мы советуем вам налить чаю и погрузится в чтение нашего материала.
Что за алгоритм?
Быстрая сортировка — это широко используемый алгоритм сортировки, использующий подход «разделяй и властвуй» для сортировки массива элементов. Он был разработан Тони Хоаром в 1959 году и до сих пор считается одним из самых эффективных алгоритмов сортировки.
Реализация алгоритма:
Вот как работает алгоритм:
✅ Если длина массива меньше или равна 1, массив уже отсортирован и мы можем просто вернуть его.
✅ В противном случае мы выбираем опорный элемент (в данном случае первый элемент массива).
✅ Мы разбиваем массив на два подмассива: один содержит все элементы, меньшие опорного, а другой содержит все элементы, большие или равные опорному.
✅ Мы рекурсивно сортируем два подмассива, вызывая quicksort() для каждого из них.
✅ Мы объединяем отсортированные подмассивы со сводным элементом между ними.
Временная сложность:
O(n*log n)
Надеемся вам понравился наш пост. Оставляйте ваши реакции и пишите комментарии.
Суперского вам настроения!
#learning_python_algorithms
Всем привет!
В прошлом посте мы разбирали merge sort, а сегодня поговорим про один из самых крутых алгоритмов сортировки - quicksort. И так по нашей традиции мы советуем вам налить чаю и погрузится в чтение нашего материала.
Что за алгоритм?
Быстрая сортировка — это широко используемый алгоритм сортировки, использующий подход «разделяй и властвуй» для сортировки массива элементов. Он был разработан Тони Хоаром в 1959 году и до сих пор считается одним из самых эффективных алгоритмов сортировки.
Реализация алгоритма:
def quicksort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
left = [x for x in arr[1:] if x < pivot]
right = [x for x in arr[1:] if x >= pivot]
return quicksort(left) + [pivot] + quicksort(right)
Функция quicksort() принимает на вход массив arr и сортирует его с помощью алгоритма quicksort. Алгоритм работает, выбирая опорный элемент, разбивая массив вокруг опоры и рекурсивно сортируя подмассивы.Вот как работает алгоритм:
Временная сложность:
O(n*log n)
Надеемся вам понравился наш пост. Оставляйте ваши реакции и пишите комментарии.
Суперского вам настроения!
#learning_python_algorithms
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1