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

Введение в продвинутые алгоритмы сортировки: Merge, Quick & Radix Сортировать в JS

Иллюстрация Yung L. Leung by Marc Lariviere на Гипиине Моя предыдущая статья «Сложность простых алгоритмов и структур данных в JavaScript», – обсудили простые алгоритмы сортировки (Bubble, Source & Insertions). Здесь я прохожу через слияние, быстрый и радикс, каждый из которых имеет значительное улучшение на

Yung L. Leung

В моей предыдущей статье « » сложность простых алгоритмов и структур данных в JavaScript , «Мы обсудили простые сортировочные алгоритмы (пузырь, выделение и сорты введения). Вот, я прохожу через слияние , быстрый & Radix Сортировка, каждый из которых имеет значительное улучшение средний Сложность времени меньше чем O (n²) Отказ

Давайте пройдемся по каждому из них более подробно.

Слияние

А Сортировка слияния Разделяет список в его отдельные предметы. Затем он сортирует их, поскольку они объединяются в растущий упорядоченный список.

На практике это будет означать непрерывно нарезать массив в одно элементные массивы, прежде чем нажать каждый элемент в более широкий массив (сначала меньшее значение). Каждый этап толкающих элементов из 2 меньших массивов на 1 больший массив включает определение того, какой элемент, из которого массив имеет меньшее значение.

Сложность сортировки слияния это O ((n log n) + 1) Отказ Помните, что большая нотация O ( сложность простых алгоритмов и структур данных в JS ) – это счет Количество операций ( O ) Что касается Количество элементов ( n ) Отказ Таким образом, список 4 элемента требует 3 расщепления. Примечание , список уже заказывается для простоты примера.

Объединение 4 массивов требует 6 сравнений.

Таким образом, математический расчет выглядит следующим образом:

Для простоты сложность сортировки слияния – O (n log n) . +1 незначительно относительно стоимости n log n и бревно основы 2 предполагается.

Быстро

А Быстрая сортировка Выбирает значение (по индексу 0), отключится все меньшие значения ближе к нему, затем делает окончательный своп для размещения выбранного значения перед меньшими значениями (индекс где-то после 0). Таким образом, все значения за поворотное значение меньшие значения. Все значения перед ним являются большие значения. Следовательно, при повороте, Выбранное значение ( Pivot ) помещается в его правильное положение. Процесс повторяется до тех пор, пока все значения не будут «поворачиваться» на их правильные позиции.

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

Таким образом, для 4-х элементных массив выбирается поворот, и его правильное положение найдено (то есть, 2 при индексе 0 принадлежит к индексу 1). Во время этого открытия 3 сравнения выполнены с поворотным значением (2) до остальных элементов (4, 1 и 3).

Частично сортированная массив (1, 2, 4, 3) затем разлагается, чтобы найти поворотные положения значения 1 и 4 ( по сравнению со значением 3 ) Перед обнаружением последнего поворота (значение 3 ). Это составляет 4 сравнения и открытие 4 поворотных позиций или:

Редикс

А Radix Сортировать Постоянно приказывает список чисел их базой десять цифр.

В этом случае числа (101, 54, 305, 6, 81) сначала упорядочены по цифре «Место 0», затем 10-е место для определения цифры и, наконец, 100-х годов. На практике это означает создание ведер (цифры от 0 до 9) для хранения чисел с общими цифрами (то есть 10 1 и 8 1 делится общую цифру в размере 0). Затем, сочетая все номера в их заказах в их ведре (начиная с 0’s Place: 10 1 , 8 1 , 5 4 , 30 5 , 6 ), Перед повторением процесса по сравнению с цифрами места 10. Это продолжается до тех пор, пока не достигнуты самые высокие цифры (то есть, 1 01 & 3 05 имеют 100-го места место).

В общем, сложность Radix Сортировать это O (на) Отказ

  • n количество элементов
  • к это среднее количество цифр на элемент

Количество чисел для сортировки ( n ) – это количество раз, когда требуется делать вложения в эти цифровые ведра. Так что список 101, 54, 305, 6, 81 требует не менее 5 отложений. Чем выше цифры ( k ) из числа коллекции, тем более раз требуется повторить процесс сортировки из 0, 10-х, 100, 1000 и т. Д. Итак, список 101, 54, 305, 6, 81 требует 5 депозитов для 0’s , 10’s & 100’s место. Это всего в общей сложности 3 х депозиты.

Заключение

Учебные передовые алгоритмы не уменьшают важность более основных. Это через изучение основных алгоритмов, которые вы узнаете о том, что это значит для поиска или сортировки, просто. И из этого исследования вы можете начать понимать проблемы, которые поставляются с этими основными алгоритмами.

Ничто не создано в вакууме. Начинается с идеи. Откуда он идет от этого человеческий разум, и что мы можем сделать с физическим миром вокруг нас. Это «всегда один день», если вы решите расширить свои горизонты.

Ссылка:

https://www.udemy.com/js-algorithms-and-data-structures-masterclass/

Оригинал: “https://www.freecodecamp.org/news/an-intro-to-advanced-sorting-algorithms-merge-quick-radix-sort-in-javascript-b65842194597/”