Точка входа в программирование
20.3K subscribers
1.25K photos
216 videos
2 files
2.77K links
Фундаментальные знания по основам программирования

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/zrgj
Download Telegram
Умеете ли работать с функцией sorted в Python?

Встроенная в Python функция сортировки элементов существенно упрощает жизнь разработчикам. Она быстро работает и позволяет отсортировать по возрастанию или убыванию.

Проверьте, предугадаете ли вы поведение кода с sorted():

https://pythonist.ru/test-sortirovka-python/

#тесты #python #сортировка
👍4💩3
This media is not supported in your browser
VIEW IN TELEGRAM
Популярные способы сортировки и визуализация их работы

Существует множество способов отсортировать данные. Ниже вы увидите несколько из них. А выше наглядная демонстрация, как работает каждый способ.

Selection Sort (Сортировка выбором): Находит минимальный элемент в несортированной части массива и перемещает его в начало. Прост, но медленный на больших данных. Сложность сортировки: \( O(n^2) \).

Insertion Sort (Сортировка вставками): Поэлементно добавляет элементы в правильное место в отсортированной части массива. Хорошо работает на почти отсортированных данных. Сложность сортировки: \( O(n^2) \) в худшем случае, \( O(n) \) в лучшем.

Heap Sort (Пирамидальная сортировка): Использует двоичную кучу для последовательного извлечения максимального элемента и его размещения в конце массива. Стабильный алгоритм. Сложность сортировки: \( O(n \log n) \).

Bubble Sort (Пузырьковая сортировка): Попарно сравнивает соседние элементы и меняет их местами, если они в неправильном порядке. Самый простой, но крайне неэффективный метод. Сложность сортировки: \( O(n^2) \).

Cocktail Sort (Коктейльная сортировка): Двусторонний вариант пузырьковой сортировки, проходит массив в прямом и обратном направлении, уменьшая количество проверок. Сложность сортировки: \( O(n^2) \).

Circle Sort (Круговая сортировка): Рекурсивно сравнивает и обменивает элементы, находящиеся на противоположных концах массива, эффективно упорядочивая данные. Сложность сортировки: \( O(n \log n) \) в среднем.

Merge Sort (Сортировка слиянием): Делит массив на части, сортирует каждую часть отдельно и сливает их в один отсортированный массив. Эффективен для больших данных, но требует дополнительной памяти. Сложность сортировки: \( O(n \log n) \).

Quick Sort (Быстрая сортировка): Выбирает опорный элемент, делит массив на элементы меньше и больше него, сортирует их рекурсивно. Один из самых быстрых алгоритмов, но чувствителен к выбору опорного элемента. Сложность сортировки: \( O(n \log n) \) в среднем, \( O(n^2) \) в худшем случае.

Shell Sort (Сортировка Шелла): Улучшение вставок, использующее сортировку с убывающим шагом. Быстрее, чем классические вставки, но зависит от выбора шага. Сложность сортировки: \( O(n^{3/2}) \) в среднем.

#сортировка
👍15🤓1
Энтузиаст создал сортировку имени Сталина

Нет, правда! Она так и называется «Милосердная сортировка имени Сталина». И это доработанная версия обычной сортировки имени Сталина, которая отбрасывает элементы, расположенные не по порядку.

В новой сортировке применён рекурсивный метод. Здесь элементы, расположенные по-порядку, сохраняются, а остальные рекурсивно перебираются, пока не будет отсортировано всё.

После всех измерений оказалось, что такой метод быстрее, чем быстрая сортировка и сортировка слиянием.

Более подробно о своём проекте и исследовании рассказал автор на GitHub. Там и про различные бенчмарки, и про сложности с реализацией, и возможные улучшения. Материал интересный и полезный, так что не поленитесь перейти по ссылке и почитать.

#ненормальноепрограммирование #сортировка
6💊3🌭1🍌1