Jump to content

Сортировка слиянием-вставкой

В информатике , сортировка слиянием-вставкой или алгоритм Форда-Джонсона представляет собой алгоритм сортировки сравнения опубликованный в 1959 году Л. Р. Фордом-младшим и Селмером М. Джонсоном . [1] [2] [3] [4] он использует меньше сравнений, В худшем случае чем лучшие ранее известные алгоритмы, двоичная сортировка вставкой и сортировка слиянием . [1] и в течение 20 лет это был алгоритм сортировки с наименьшим количеством известных сравнений. [5] Хотя это и не имеет практического значения, оно сохраняет теоретический интерес в связи с задачей сортировки с минимальным числом сравнений. [3] Тот же алгоритм, возможно, был независимо открыт Станиславом Трибулой и Ченом Пингом. [4]

Алгоритм

[ редактировать ]

Сортировка слиянием-вставкой выполняет следующие шаги для входных данных: из элементы: [6]

  1. Сгруппируйте элементы в пары элементов произвольно, оставляя один элемент непарным, если количество элементов нечетное.
  2. Выполнять сравнения, по одному на пару, для определения большего из двух элементов в каждой паре.
  3. Рекурсивно сортировать более крупные элементы из каждой пары, создавая отсортированную последовательность из входных элементов в порядке возрастания.
  4. Вставьте в начало элемент, который был в паре с первым и наименьшим элементом .
  5. Вставьте оставшиеся элементы в , по одному, со специально выбранным порядком вставки, описанным ниже. Используйте двоичный поиск в подпоследовательностях (как описано ниже), чтобы определить позицию, в которую должен быть вставлен каждый элемент.

Алгоритм разработан с учетом того факта, что двоичный поиск, используемый для вставки элементов в наиболее эффективны (с точки зрения анализа наихудшего случая), когда длина искомой подпоследовательности на единицу меньше степени двойки . Это связано с тем, что для этих длин все результаты поиска используют одинаковое количество сравнений друг с другом. [1] Чтобы выбрать порядок вставки, обеспечивающий такую ​​длину, рассмотрим отсортированную последовательность после шага 4 схемы выше (перед вставкой остальных элементов),и пусть обозначают th элемент этой отсортированной последовательности. Таким образом,

где каждый элемент с сопряжен с элементом который еще не был вставлен. (нет элементов или потому что и были в паре друг с другом.) Если нечетно, оставшийся непарный элемент также должен быть пронумерован как с больше, чем индексы парных элементов.Затем последний шаг приведенной выше схемы можно расширить до следующих шагов: [1] [2] [3] [4]

  • Разделить невставленные элементы на группы со смежными индексами. Есть два элемента и в первой группе, а суммы размеров каждых двух соседних групп образуют последовательность степеней двойки. Таким образом, размеры групп составляют: 2, 2, 6, 10, 22, 42,...
  • Упорядочите невставленные элементы по группам (от меньших индексов к большим), но внутри каждой группы упорядочивайте их от больших индексов к меньшим. Таким образом, порядок становится
  • Используйте этот порядок для вставки элементов в . Для каждого элемента , используйте двоичный поиск с начала до, но не включая чтобы определить, куда вставить .

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

  • сравнение пар предметов,
  • сравнения для рекурсивного вызова и
  • некоторое количество сравнений для двоичных вставок, используемых для вставки остальных элементов.

В третьем члене наихудшее количество сравнений для элементов первой группы равно двум, поскольку каждое из них вставляется в подпоследовательность элементов. длиной не более трех. Первый, вставляется в трехэлементную подпоследовательность . Затем, вставляется в некоторую перестановку трехэлементной подпоследовательности , или в некоторых случаях в двухэлементную подпоследовательность . Аналогично, элементы и второй группы каждый вставляется в подпоследовательность длиной не более семи с использованием трех сравнений. В более общем смысле, наихудшее количество сравнений элементов в эта группа , поскольку каждая из них вставляется в подпоследовательность длиной не более . [1] [2] [3] [4] Суммируя количество сравнений, использованных для всех элементов, и решая полученное рекуррентное соотношение ,этот анализ можно использовать для расчета значений , давая формулу [7]

или, в закрытом виде , [8]

Для количество сравнений [1]

0, 1, 3, 5, 7, 10, 13, 16, 19, 22, 26, 30, 34, ... (последовательность A001768 в OEIS )

Связь с другими видами сравнения

[ редактировать ]

Алгоритм называется сортировкой вставкой слиянием, потому что первоначальные сравнения, которые он выполняет перед рекурсивным вызовом (объединение произвольных элементов в пары и сравнение каждой пары), такие же, как и начальные сравнения сортировки слиянием .в то время как сравнения, которые он выполняет после рекурсивного вызова (используя двоичный поиск для вставки элементов один за другим в отсортированный список), следуют тому же принципу, что и сортировка вставкой . В этом смысле это гибридный алгоритм , сочетающий в себе сортировку слиянием и сортировку вставкой. [9]

Для небольших входов (до ) его количество сравнений равно нижней границе сортировки сравнения . Однако для больших входных данных количество сравнений, выполняемых алгоритмом вставки слиянием, превышает эту нижнюю границу.Сортировка вставкой слиянием также выполняет меньше сравнений, чем сортировка чисел , которая подсчитывает сравнения, выполненные при двоичной сортировке вставкой или в худшем случае сортировке слиянием. Числа сортировки колеблются между и , с тем же ведущим членом, но с худшим постоянным множителем в линейном члене более низкого порядка. [1]

Сортировка слиянием-вставкой — это алгоритм сортировки с минимально возможным сравнением для предметы всякий раз, когда , и у него наименьшее количество сравнений, известных для . [10] [11] В течение 20 лет сортировка слиянием-вставкой была алгоритмом сортировки с наименьшим количеством сравнений, известных для всех входных длин.Однако в 1979 году Гленн Манахер опубликовал другой алгоритм сортировки, который использовал еще меньше сравнений для достаточно больших входных данных. [3] [5] Остается неизвестным, сколько именно сравнений необходимо для сортировки, для всех , но алгоритм Манахераи более поздние рекордные алгоритмы сортировки использовали модификации идей сортировки вставкой слиянием. [3]

  1. ^ Jump up to: Перейти обратно: а б с д и ж г Форд, Лестер Р. младший ; Джонсон, Селмер М. (1959), «Турнирная задача», American Mathematical Monthly , 66 : 387–389, doi : 10.2307/2308750 , MR   0103159
  2. ^ Jump up to: Перейти обратно: а б с Уильямсон, Стэнли Гилл (2002), «2.31 Вставка слиянием (Форд – Джонсон)» , Комбинаторика для информатики , Дуврские книги по математике, Courier Corporation, стр. 66–68, ISBN  9780486420769
  3. ^ Jump up to: Перейти обратно: а б с д и ж Махмуд, Хосам М. (2011), «12.3.1 Алгоритм Форда – Джонсона» , Сортировка: теория распределения , Ряды Уайли в дискретной математике и оптимизации, том. 54, John Wiley & Sons, стр. 286–288, ISBN.  9781118031131
  4. ^ Jump up to: Перейти обратно: а б с д Кнут, Дональд Э. (1998), «Вставка слиянием», Искусство компьютерного программирования , Vol. 3: Сортировка и поиск (2-е изд.), стр. 184–186.
  5. ^ Jump up to: Перейти обратно: а б Маначер, Гленн К. (июль 1979 г.), «Алгоритм сортировки Форда-Джонсона не оптимален», Журнал ACM , 26 (3): 441–456, doi : 10.1145/322139.322145
  6. ^ В оригинальном описании Ford & Johnson (1959) элементы отсортированы в порядке убывания. Перечисленные здесь шаги меняют вывод в соответствии с описанием Кнута (1998) . Результирующий алгоритм выполняет те же сравнения, но вместо этого выводит данные в порядке возрастания.
  7. ^ Кнут (1998) приписывает формулу суммирования докторской философии 1960 года. диссертация А. Хадиана. Формула аппроксимации уже была дана Фордом и Джонсоном (1959) .
  8. ^ Гай, Ричард К .; Новаковски, Ричард Дж. (декабрь 1995 г.), « Ежемесячные нерешенные проблемы, 1969–1995», American Mathematical Monthly , 102 (10): 921–926, doi : 10.2307/2975272
  9. ^ Кнут (1998) , с. 184: «Поскольку это включает в себя некоторые аспекты слияния и некоторые аспекты вставки, мы называем это вставкой слиянием ».
  10. ^ Печарски, Марцин (2004), «Новые результаты в сортировке по минимальному сравнению», Algorithmica , 40 (2): 133–145, doi : 10.1007/s00453-004-1100-7 , MR   2072769
  11. ^ Печарски, Марцин (2007), «Алгоритм Форда-Джонсона до сих пор непобедим для менее чем 47 элементов», Information Processing Letters , 101 (3): 126–128, doi : 10.1016/j.ipl.2006.09.001 , MR   2287331
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 18204a4da99ca20041652fb2b5da94f6__1712164500
URL1:https://arc.ask3.ru/arc/aa/18/f6/18204a4da99ca20041652fb2b5da94f6.html
Заголовок, (Title) документа по адресу, URL1:
Merge-insertion sort - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)