Рубрики
Без рубрики

TimSort: Алгоритм и реализация в Python

Python TimSort-это гибридный алгоритм сортировки слияния и сортировки вставки. Это стабильный алгоритм, работающий на данных реального времени.

Автор оригинала: Team Python Pool.

TimSort: Алгоритм и реализация в Python

Привет, кодеры!! В этой статье мы познакомимся с алгоритмом TimSort и изучим его реализацию на Python. Тим Питерс создал TimSort в 2002 году to улучшить производительность сортировки списка. Функция sort() использует этот алгоритм и является самым быстрым алгоритмом сортировки.

Что такое алгоритм Python TimSort?

TimSort-это алгоритм сортировки, представляющий собой гибрид алгоритма сортировки слиянием и сортировки вставкой. Это стабильный алгоритм, работающий на данных реального времени. При этом сначала анализируется список, который необходимо отсортировать, и на его основе выбирается наилучший подход.

Алгоритм Python TimSort:

  1. Разделите массив на блоки, известные как run
  2. Размер прогона может быть как 32, так и 64
  3. Сортировка элементов каждого прогона с помощью сортировки вставки
  4. Слияние отсортированных запусков с помощью алгоритма сортировки слиянием
  5. Удваивайте размер объединенного массива после каждой итерации

Понимание алгоритма в деталях:

Расчет минимального пробега:

Теперь мы знаем, что первым шагом алгоритма Python Timsort является разделение блоков на прогоны. minrun – это минимальная длина каждого пробега. Он вычисляется из числа элементов массива N.

  • Это не должно быть очень долго, так как мы будем реализовывать сортировку вставки для сортировки каждого запуска, и мы знаем, что сортировка вставки работает более эффективно для более коротких массивов
  • Однако он также не должен быть слишком коротким, так как следующим шагом является слияние этих запусков, более короткие запуски приведут к большему количеству запусков
  • Это выгодно, если N/min run имеет степень 2, так как это приведет к наилучшей производительности при сортировке слиянием.

Разбиение и сортировка пробегов:

Когда мы достигаем этого шага, у нас уже есть два значения – N и minrun

  • Флаг нисходящий – это сравнение между первыми 2 элементами, если остался только 1 элемент, то он устанавливается как false.
  • Затем другие элементы повторяются и проверяются, находятся ли они все еще в восходящем или “строгом” порядке убывания, пока не будет найден элемент, который не следует этому порядку.
  • После этого у нас будет запуск в восходящем или “строгом” нисходящем порядке. Если он находится в “строгом” порядке убывания, мы должны обратить его вспять.
  • Затем мы проверяем, чтобы убедиться, что длина пробега удовлетворяет минимальному пробегу. Если он меньше, мы компенсируем следующие пункты, чтобы он достиг минимального размера.

слияние трасс:

  • Сначала мы создадим временный прогон, имеющий размер наименьшего из объединенных прогонов.
  • После этого нам нужно скопировать самый короткий href=”https://en.wikipedia.org/wiki/Run_command”>запустите во временный. href=”https://en.wikipedia.org/wiki/Run_command”>запустите во временный.
  • Теперь мы пометим первый элемент большого и временного массива как текущую позицию.
  • На каждом следующем шаге мы будем сравнивать элементы в больших и временных массивах, а меньшие будут перемещены в новый отсортированный массив.
  • Нам нужно повторить описанный выше шаг до тех пор, пока один из массивов не закончится.
  • Наконец, мы добавим все остальные элементы в конец нового.

Реализация алгоритма Тима в Python:

Выход:

Вывод для алгоритма timsort, полученного при выполнении заданного кода
Вывод для алгоритма timsort, полученного при выполнении заданного кода

ВЫХОД

Анализ сложности алгоритма Python TimSort:

  • Наихудшая временная сложность: O(n log n)
  • Наилучшая временная сложность: O(n)
  • Средняя временная сложность: O(n log n)
  • Наихудшая пространственная сложность: O(n)

Преимущества Python Timsort:

  • Это стабильный алгоритм сортировки
  • Работает для данных в режиме реального времени

Надо Читать

  • Сортировка вставки в Python [Программа, алгоритм, Пример]
  • Алгоритм сортировки оболочки и программа на Python
  • Изучение различных способов сортировки списка списков в Python
  • Методы Сортировки С Использованием Python
  • КАК PYTHON СОРТИРУЕТ СПИСОК КОРТЕЖЕЙ

Вывод:

Это все об алгоритме Python TimSort. Встроенная функция < strong> sort() Python использует этот алгоритм, поскольку он обеспечивает стабильный подход к сортировке. Он быстрее других алгоритмов сортировки и может быть непосредственно реализован в python с помощью метода sort ().