Как работает сортировка вставками?

  • 26 августа 2023 г. 12:06
Ответы на вопрос 2
Сортировка вставками работает следующим образом:

1. Итерация: На первой итерации предполагается, что первый элемент списка уже отсортирован, поэтому начинаем со второго элемента.

2. Сравнение: Берется следующий элемент списка и сравнивается со всеми предшествующими элементами. Если элемент меньше предшествующего, то он перемещается на его место и сравнивается с предыдущими элементами. Этот процесс продолжается, пока не будет найдено место для элемента или пока не будет достигнут начало списка.

3. Вставка: Когда место для элемента найдено, он вставляется на свое место среди предшествующих элементов, и следующий элемент выбирается для сравнения и вставки.

4. Повторение: Процесс повторяется для всех оставшихся элементов списка, по одному элементу за раз. Каждый новый элемент вставляется в нужное место, пока весь список не будет отсортирован.

Код, который вы предоставили, является реализацией алгоритма сортировки вставками для списка k и соответствует описанному алгоритму. Он выполняет итерацию по элементам списка, сравнивая их со всеми предыдущими элементами и вставляя их на свое место. Таким образом, код сортирует список, располагая элементы в правильном порядке.
Можно упростить код функции sort_insertion(array: list) -> list следующим образом:
1. Пройти по всем элементам списка array, начиная с индекса 1.
2. Взять текущий элемент и сохранить его в переменную x.
3. Установить переменную j равной текущему индексу.
4. Пока j больше 0 и предыдущий элемент array[j - 1] больше x, выполнить следующие действия:
    - Присвоить текущему элементу значение предыдущего элемента: array[j] = array[j - 1].
    - Уменьшить значение j на 1: j -= 1.
5. Присвоить текущему элементу значение x: array[j] = x.
6. Вернуть отсортированный список array.

Совет: Чтобы сравнить производительность двух вариантов (первого и sort_insertion), замерьте время выполнения каждого из них. Вы можете использовать модуль timeit для этой цели.
Похожие вопросы