Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Что выведет код?
Anonymous Quiz
5%
0 + ziuq
25%
0.0 + ziuq
4%
0.0 + 0
10%
-0.0 + ''
9%
0.0 + ''
47%
Error
Как функционируют менеджеры контекста в Python и в каких ситуациях они могут быть полезны?
Менеджеры контекста в Python предназначены для эффективного управления ресурсами, такими как файлы, сетевые соединения или блокировки, обеспечивая автоматическое освобождение этих ресурсов по завершении работы. Их основное применение заключается в необходимости гарантированного освобождения ресурсов, даже если в процессе возникают ошибки. Менеджеры контекста создаются с использованием ключевого слова with, которое автоматически вызывает методы __enter__ и __exit__ у соответствующего объекта.
Менеджеры контекста в Python предназначены для эффективного управления ресурсами, такими как файлы, сетевые соединения или блокировки, обеспечивая автоматическое освобождение этих ресурсов по завершении работы. Их основное применение заключается в необходимости гарантированного освобождения ресурсов, даже если в процессе возникают ошибки. Менеджеры контекста создаются с использованием ключевого слова with, которое автоматически вызывает методы __enter__ и __exit__ у соответствующего объекта.
Forwarded from Библиотека питониста | Python, Django, Flask
🐍🃏 Как написать пасьянс на Python
Пасьянс «Косынка» — одна из самых популярных карточных игр.
👍 В этой статье мы разберем, как реализовать «Косынку» с использованием библиотеки Tkinter: детально рассмотрим логику игры, настройки интерфейса, а также визуализацию и обработку перемещений карт.
🤓 Статья
#игрынаPython
Пасьянс «Косынка» — одна из самых популярных карточных игр.
👍 В этой статье мы разберем, как реализовать «Косынку» с использованием библиотеки Tkinter: детально рассмотрим логику игры, настройки интерфейса, а также визуализацию и обработку перемещений карт.
🤓 Статья
#игрынаPython
Зачем нужна pass?
Конструкция pass в Python представляет собой пустой оператор. Она применяется в тех случаях, когда синтаксис требует наличия оператора, но выполнять никаких действий не требуется. Это может быть особенно полезно при создании заглушек для функций, которые будут реализованы позже, или в циклах, где на текущей итерации не нужно выполнять никаких операций.
Конструкция pass в Python представляет собой пустой оператор. Она применяется в тех случаях, когда синтаксис требует наличия оператора, но выполнять никаких действий не требуется. Это может быть особенно полезно при создании заглушек для функций, которые будут реализованы позже, или в циклах, где на текущей итерации не нужно выполнять никаких операций.
Как быстро найти подстроку?
Чтобы найти подстроку в Python с помощью оператора in, достаточно использовать его в условном операторе (обычно внутри if). Вот пошаговое объяснение:
1. Создайте переменную, в которой будет находиться основная строка (назовем ее main_string).
2. Создайте переменную для подстроки, которую вы хотите обнаружить (назовем ее sub_string).
3. Примените оператор in для проверки наличия sub_string в main_string внутри условного оператора if. Если sub_string присутствует в main_string, условие if выполнится, в противном случае — нет.
Оператор in проверяет, содержится ли подстрока в строке, и возвращает булево значение: True, если подстрока найдена, и False, если нет.
Чтобы найти подстроку в Python с помощью оператора in, достаточно использовать его в условном операторе (обычно внутри if). Вот пошаговое объяснение:
1. Создайте переменную, в которой будет находиться основная строка (назовем ее main_string).
2. Создайте переменную для подстроки, которую вы хотите обнаружить (назовем ее sub_string).
3. Примените оператор in для проверки наличия sub_string в main_string внутри условного оператора if. Если sub_string присутствует в main_string, условие if выполнится, в противном случае — нет.
Оператор in проверяет, содержится ли подстрока в строке, и возвращает булево значение: True, если подстрока найдена, и False, если нет.
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
Когда возникает NotImplementedError?
Исключение NotImplementedError возникает в тех случаях, когда метод или функция должны быть реализованы в подклассе, но на самом деле не были реализованы. Это часто происходит, когда родительский класс объявляет метод, но не предоставляет его реализацию, оставляя эту задачу для подклассов. Если подкласс не реализует данный метод, при его вызове будет сгенерировано исключение NotImplementedError. Это может быть полезно для отладки, так как позволяет убедиться, что все необходимые методы присутствуют в подклассах. Кроме того, такое исключение может возникнуть и в других ситуациях, например, при попытке использовать неопределённый метод или функцию.
Исключение NotImplementedError возникает в тех случаях, когда метод или функция должны быть реализованы в подклассе, но на самом деле не были реализованы. Это часто происходит, когда родительский класс объявляет метод, но не предоставляет его реализацию, оставляя эту задачу для подклассов. Если подкласс не реализует данный метод, при его вызове будет сгенерировано исключение NotImplementedError. Это может быть полезно для отладки, так как позволяет убедиться, что все необходимые методы присутствуют в подклассах. Кроме того, такое исключение может возникнуть и в других ситуациях, например, при попытке использовать неопределённый метод или функцию.
С Новым годом и Годом Змеи! 🐍 Пусть этот год принесет вам успех, рост и меньше усилий для достижения больших целей. Мы в Proglib Academy пришли с хорошими новостями в начале года.
🌟 Обновления курсов!
Мы работаем над тем, чтобы ваше обучение было проще и эффективнее. Вот что мы уже улучшили:
📈 Data Science: улучшили блок «Геометрическая прогрессия и векторная алгебра» — ключевой этап курса, который идет сразу после теории множеств.
Он закладывает фундамент для работы с данными: от анализа роста и убывания величин (геометрическая прогрессия) до понимания многомерных пространств и операций с векторами. Знания которых пригодятся в машинном обучения и аналитики.
🐍 Python: обновили курс с учетом последней версии Python 3.9.5, добавив актуальные материалы и улучшив структуру. Чтобы вы могли лучше закрепить пройденный материал, мы добавили новые интересные задачи и практические примеры.
Учебный процесс стал еще удобнее и эффективнее, а вы сможете быстрее освоить современные инструменты и техники программирования
Общие обновления:
- Перезаписали демо-курсы и презентации. Чтобы вы точно одурели с этой прикормки.
- Сократили время проверки домашних заданий, ответы теперь приходят быстрее.
- Видео теперь без перекрытий, презентации стали четче, а задания логичнее.
Но главное — мы растем для вас и с вами. Ваша обратная связь помогает нам становиться лучше. Делитесь идеями, и вместе мы создадим лучший образовательный продукт для вас!
💡 С 27.01.25 цены изменятся на 10%.
Пример: Основы программирования на Python 13,990 → 15,389 ₽. Это позволяет нам делать курсы еще круче.
Давайте сделаем 2025 год годом вашего профессионального успеха! 🚀
Выбрать курс
🌟 Обновления курсов!
Мы работаем над тем, чтобы ваше обучение было проще и эффективнее. Вот что мы уже улучшили:
📈 Data Science: улучшили блок «Геометрическая прогрессия и векторная алгебра» — ключевой этап курса, который идет сразу после теории множеств.
Он закладывает фундамент для работы с данными: от анализа роста и убывания величин (геометрическая прогрессия) до понимания многомерных пространств и операций с векторами. Знания которых пригодятся в машинном обучения и аналитики.
🐍 Python: обновили курс с учетом последней версии Python 3.9.5, добавив актуальные материалы и улучшив структуру. Чтобы вы могли лучше закрепить пройденный материал, мы добавили новые интересные задачи и практические примеры.
Учебный процесс стал еще удобнее и эффективнее, а вы сможете быстрее освоить современные инструменты и техники программирования
Общие обновления:
- Перезаписали демо-курсы и презентации. Чтобы вы точно одурели с этой прикормки.
- Сократили время проверки домашних заданий, ответы теперь приходят быстрее.
- Видео теперь без перекрытий, презентации стали четче, а задания логичнее.
Но главное — мы растем для вас и с вами. Ваша обратная связь помогает нам становиться лучше. Делитесь идеями, и вместе мы создадим лучший образовательный продукт для вас!
💡 С 27.01.25 цены изменятся на 10%.
Пример: Основы программирования на Python 13,990 → 15,389 ₽. Это позволяет нам делать курсы еще круче.
Давайте сделаем 2025 год годом вашего профессионального успеха! 🚀
Выбрать курс
Как функционирует метод __new__() в Python?
Метод __new__() отвечает за создание нового экземпляра класса, выделяя необходимую память для объекта. Он вызывается раньше метода __init__(), который занимается инициализацией уже созданного экземпляра. Этот метод особенно важен при работе с неизменяемыми типами, такими как str или int, а также в ситуациях, когда требуется контролировать процесс создания объекта, например, в паттерне Singleton.
Метод __new__() отвечает за создание нового экземпляра класса, выделяя необходимую память для объекта. Он вызывается раньше метода __init__(), который занимается инициализацией уже созданного экземпляра. Этот метод особенно важен при работе с неизменяемыми типами, такими как str или int, а также в ситуациях, когда требуется контролировать процесс создания объекта, например, в паттерне Singleton.
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
Представьте, вы попали на собеседование мечты. Всё идёт гладко, но пара неудачных фраз могут свести на нет все ваши старания. Например, если вы слишком скромны или, наоборот, перегибаете с самоуверенностью, это может вызвать недоверие. Или фраза, которая должна показать вашу гибкость, внезапно делает акцент на недостатке опыта. Знакомо?
Есть проверенные подходы, которые помогут избежать таких ситуаций, выстроить грамотное общение и оставить положительное впечатление. Готовы узнать больше? 🌟
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое old-style и new-style классы и в чем их различия?
— Old-style классы наследуются напрямую от класса type, тогда как new-style классы имеют наследование от класса object.
— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.
— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.
— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.
Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.
— Old-style классы наследуются напрямую от класса type, тогда как new-style классы имеют наследование от класса object.
— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.
— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.
— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.
Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
💡 Как получить от нейросети код, работающий в 100 раз быстрее
Интересный эксперимент провели с Claude 3.5 Sonnet: попытались улучшить простой алгоритм на Python, раз за разом прося ИИ «написать код лучше». Задача была несложная — найти разницу между максимальным и минимальным числами в массиве, сумма цифр которых равна 30.
Казалось бы, что тут можно улучшать?
👉 Подробнее в нашей статье
#CodeOptimization
Интересный эксперимент провели с Claude 3.5 Sonnet: попытались улучшить простой алгоритм на Python, раз за разом прося ИИ «написать код лучше». Задача была несложная — найти разницу между максимальным и минимальным числами в массиве, сумма цифр которых равна 30.
Казалось бы, что тут можно улучшать?
👉 Подробнее в нашей статье
#CodeOptimization
Что делает метод isalnum()?
Метод isalnum() — это строковый метод, который определяет, состоит ли строка исключительно из букв и/или цифр. Он возвращает True, если все символы в строке являются буквами или цифрами, и False в противном случае.
Метод isalnum() особенно полезен при проверке пользовательского ввода, когда необходимо удостовериться, что введенная строка содержит только буквы и цифры.
Метод isalnum() — это строковый метод, который определяет, состоит ли строка исключительно из букв и/или цифр. Он возвращает True, если все символы в строке являются буквами или цифрами, и False в противном случае.
Метод isalnum() особенно полезен при проверке пользовательского ввода, когда необходимо удостовериться, что введенная строка содержит только буквы и цифры.
Forwarded from Proglib.academy | IT-курсы
🤖 📈 Data Science в 2025 году: 7 главных трендов
Разработчики JetBrains и Python Software Foundation рассказали, как изменится Data Science в ближайшие годы.
➡️ В статье:
▪️ Почему доля Python в анализе данных снижается
▪️ Какие библиотеки набирают популярность вместо pandas
▪️ Что происходит с AutoML, MLOps и визуализацией данных
▪️ И почему Rust и Julia наступают Python на пятки
Подробный разбор, новые инструменты и прогнозы на будущее — всё это читай в нашей статье.
🔵 Тренды меняются, но основы остаются — укрепи базу с нашим курсом «Математика для Data Science»
Разработчики JetBrains и Python Software Foundation рассказали, как изменится Data Science в ближайшие годы.
▪️ Почему доля Python в анализе данных снижается
▪️ Какие библиотеки набирают популярность вместо pandas
▪️ Что происходит с AutoML, MLOps и визуализацией данных
▪️ И почему Rust и Julia наступают Python на пятки
Подробный разбор, новые инструменты и прогнозы на будущее — всё это читай в нашей статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое __slots__ в Python, как они функционируют и когда их стоит применять?
__slots__ — это специальный атрибут класса, который задает фиксированный набор атрибутов для его экземпляров. Это позволяет сократить использование памяти, так как вместо хранения атрибутов в стандартном словаре (__dict__) они размещаются в фиксированной структуре. __slots__ особенно полезны, когда необходимо создать большое количество объектов одного класса, и экономия памяти имеет критическое значение. Однако стоит учитывать, что использование __slots__ ограничивает возможность добавления новых атрибутов, что может снизить гибкость классов.
__slots__ — это специальный атрибут класса, который задает фиксированный набор атрибутов для его экземпляров. Это позволяет сократить использование памяти, так как вместо хранения атрибутов в стандартном словаре (__dict__) они размещаются в фиксированной структуре. __slots__ особенно полезны, когда необходимо создать большое количество объектов одного класса, и экономия памяти имеет критическое значение. Однако стоит учитывать, что использование __slots__ ограничивает возможность добавления новых атрибутов, что может снизить гибкость классов.
Что делает %s?
%s — это специальное поле форматирования, предназначенное для вставки строковых значений в другие строки и их форматирования. Оно является частью строкового форматирования, применяемого в функциях print(), str.format() и в старом стиле с использованием оператора %.
%s — это специальное поле форматирования, предназначенное для вставки строковых значений в другие строки и их форматирования. Оно является частью строкового форматирования, применяемого в функциях print(), str.format() и в старом стиле с использованием оператора %.
Сортировка вставками
Сортировка вставками, подобно сортировке выборкой, делит список на две части: отсортированную и неотсортированную. Алгоритм проходит по неотсортированному сегменту и вставляет текущий элемент в нужное место в отсортированной части.
Предполагается, что первый элемент списка уже отсортирован. Далее рассматриваем следующий элемент, обозначим его как x. Если x больше первого элемента, он остается на своем месте. Если же он меньше, мы перемещаем первый элемент на вторую позицию, а x устанавливаем на первое место.
Продолжая с остальными элементами из несортированного сегмента, мы сдвигаем более крупные элементы в отсортированной части списка, пока не встретим элемент, меньший чем x, или не дойдем до конца списка. В первом случае x помещается на правильную позицию.
Среднее время выполнения сортировки вставками составляет O(n²), где n — это количество элементов в списке.
Сортировка вставками, подобно сортировке выборкой, делит список на две части: отсортированную и неотсортированную. Алгоритм проходит по неотсортированному сегменту и вставляет текущий элемент в нужное место в отсортированной части.
Предполагается, что первый элемент списка уже отсортирован. Далее рассматриваем следующий элемент, обозначим его как x. Если x больше первого элемента, он остается на своем месте. Если же он меньше, мы перемещаем первый элемент на вторую позицию, а x устанавливаем на первое место.
Продолжая с остальными элементами из несортированного сегмента, мы сдвигаем более крупные элементы в отсортированной части списка, пока не встретим элемент, меньший чем x, или не дойдем до конца списка. В первом случае x помещается на правильную позицию.
Среднее время выполнения сортировки вставками составляет O(n²), где n — это количество элементов в списке.