Курс Python → Сортировка слиянием
Алгоритм сортировки слиянием является одним из наиболее эффективных методов сортировки массивов. Он основан на стратегии «разделяй и властвуй», которая заключается в разделении исходного массива на две равные части, сортировке каждой из них отдельно, а затем объединении отсортированных подмассивов в один отсортированный массив. Этот подход позволяет эффективно сортировать массивы любого размера.
Для реализации алгоритма сортировки слиянием на Python можно написать функцию, которая будет рекурсивно разделять и сортировать массив. Начнем с базового случая — когда массив содержит только один элемент, в этом случае он уже отсортирован. Затем рекурсивно делим массив пополам, пока не дойдем до базового случая, после чего начинаем объединять и сортировать подмассивы.
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_arr = merge_sort(arr)
print(sorted_arr)
В данном примере функция merge_sort рекурсивно разделяет и сортирует массив arr, а функция merge объединяет и сортирует два отсортированных подмассива. После вызова merge_sort для исходного массива, мы получаем отсортированный массив sorted_arr, который затем можно использовать в дальнейшем коде.
Алгоритм сортировки слиянием имеет сложность O(n log n), что делает его одним из наиболее эффективных методов сортировки. Он также устойчив, что означает, что порядок элементов с одинаковыми значениями не меняется после сортировки. Этот алгоритм широко используется в практике программирования и может быть полезен при работе с большими массивами данных.
Другие уроки курса "Python"
- Перезапуск ячейки в Jupyter Notebook с dostoevsky
- Список импортированных модулей в Python
- Обезопасьте ввод данных
- Генератор надежных паролей
- Python enumerate() функции
- Модуль xkcd: добавление юмора в Python
- Сортировка HTML-элементов
- Анонимные функции Lambda
- Замена символов в Python
- Безопасные SQL-запросы в Python 3.11
- Параллельные вычисления в Python
- Python: библиотеки и функции
- Аннотации типов в Python
- Добавление кнопки в tkinter
- Использование эмодзи в Python
- Обновление и получение данных в SQLite
- Python enumerate() использование
- Кортеж в Python: создание и использование
- Python reversed() vs срез[::-1]
- Принципы SRP и OCP
- Отрицательные индексы списков
- Оператор (*) в Python
- Преобразование текста в речь с Python
- Сравнение строк в Python
- Регистрация на хакатоне
- Генерация UUID в Python
- Работа с getopt
- Сохранение и загрузка модели в PyTorch
- Поиск наиболее частого элемента в списке
- Закрытие файла в Python
- ChainMap.new_child() — добавление нового словаря
- Измерение времени выполнения с помощью time
- Генераторы данных
- Удаление дубликатов из списка
- Распаковка элементов последовательности
- Фильтрация входных данных в Python
- Работа с collections в Python
- Python UserString — создание подклассов строк
- split() — разделение строки
- Регистрация на TenChat
- Проверка окончания строки с помощью str.endswith()
- Работа с комплексными числами
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Обработка ошибок в Python
- Автоматизация с Python
- Метод __irshift__ для побитового сдвига вправо
- Метод __int__ в Python















