Jump to content

Нечетно-четный сорт

(Перенаправлено с сортировки по кирпичикам )
Нечетно-четный сорт
Пример транспозиции нечетно-четной сортировки списка случайных чисел
Пример транспозиции нечетно-четной сортировки списка случайных чисел.
Сорт Алгоритм сортировки
Структура данных Множество
Худшая производительность
Лучшая производительность
Наихудшая пространственная сложность
Оптимальный Нет

В вычислительной технике используется сортировка «нечет-чет» или транспонированная сортировка «нечет-чет» (также известная как кирпичная сортировка) . [1] [ самостоятельный источник ] или сортировка по четности ) — относительно простой алгоритм сортировки , изначально разработанный для использования на параллельных процессорах с локальными соединениями. Это сортировка сравнения, связанная с пузырьковой сортировкой , с которой она имеет много общих характеристик. Он работает путем сравнения всех нечетных/четных индексированных пар соседних элементов в списке, и, если пара находится в неправильном порядке (первый больше второго), элементы переключаются. Следующий шаг повторяет это для пар четных/нечетных индексов (соседних элементов). Затем он чередует шаги «нечетный/четный» и «четный/нечетный», пока список не будет отсортирован.

Сортировка по массивам процессоров

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

На параллельных процессорах, с одним значением на процессор и только локальными соединениями соседей слева и справа, все процессоры одновременно выполняют операцию сравнения-обмена со своими соседями, чередуя пары нечет-чет и чет-нечет. и показал свою эффективность на таких процессорах . Этот алгоритм был первоначально представлен Хаберманном в 1972 году [2]

Алгоритм эффективно распространяется на случай нескольких элементов на процессор. В алгоритме разделения слиянием Боде-Стивенсона каждый процессор сортирует свой собственный подсписок на каждом шаге, используя любой эффективный алгоритм сортировки, а затем выполняет операцию разделения слиянием или транспозиции-слияния со своим соседом, при этом пары соседей чередуются. между нечетным-четным и четным-нечетным на каждом шаге. [3]

Сортировка слиянием чет-нечет Бэтчера

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

Связанный, но более эффективный алгоритм сортировки — это сортировка слиянием чет-нечет Бэтчера , использующая операции сравнения-обмена и операции идеального перемешивания. [4] Метод Бэтчера эффективен на параллельных процессорах с дальними соединениями. [5]

Алгоритм

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

Однопроцессорный алгоритм, такой как пузырьковая сортировка , прост, но не очень эффективен. Здесь начинающийся с нуля предполагается индекс, :

function oddEvenSort(list) {  function swap(list, i, j) {    var temp = list[i];    list[i] = list[j];    list[j] = temp;  }  var sorted = false;  while (!sorted) {    sorted = true;    for (var i = 1; i < list.length - 1; i += 2) {      if (list[i] > list[i + 1]) {        swap(list, i, i + 1);        sorted = false;      }    }    for (var i = 0; i < list.length - 1; i += 2) {      if (list[i] > list[i + 1]) {        swap(list, i, i + 1);        sorted = false;      }    }  }}

Доказательство правильности

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

Претензия: Пусть быть последовательностью данных, упорядоченной по <. Алгоритм сортировки «нечет-чет» правильно сортирует эти данные по проходит. (Проход здесь определяется как полная последовательность сравнений нечет-чет или чет-нечет. Проходы происходят в следующем порядке: проход 1: нечет-чет, проход 2: чет-нечет и т. д.)

Доказательство:

Это доказательство во многом основано на доказательстве Томаса Ворша. [6]

Поскольку алгоритм сортировки включает только операции сравнения-замены и не обращает на это внимания (порядок операций сравнения-замены не зависит от данных), по принципу сортировки Кнута 0–1, [7] [8] достаточно проверить правильность при каждом равно 0 или 1. Предположим, что существуют 1 с.

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

Теперь рассмотрим вторую крайнюю правую цифру 1. После двух проходов цифра справа от нее сместится как минимум на один шаг вправо. Отсюда следует, что для всех оставшихся проходов мы можем рассматривать вторую крайнюю правую 1 как крайнюю правую 1. Вторая крайняя правая 1 начинается с позиции не ниже и должен быть перемещен в положение максимум , поэтому его необходимо переместить максимум шаги. После максимум двух проходов самая правая 1 уже переместится, поэтому запись справа от второй самой правой 1 будет равна 0. Следовательно, для всех проходов после первых двух вторая крайняя правая 1 будет перемещаться вправо. Таким образом, требуется максимум проходит, чтобы переместить вторую крайнюю справа 1 в правильное положение.

Продолжая таким же образом, по индукции можно показать, что -я крайняя правая 1 перемещается в правильное положение не более чем за проходит. С , отсюда следует, что -я крайняя правая 1 перемещается в правильное положение не более чем за проходит. Таким образом, список правильно отсортирован в проходит. ЯВЛЯЕТСЯ

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

  1. ^ Филлипс, Малькольм. «Сортировка массивов» . Домашние страницы.ihug.co.nz . Архивировано из оригинала 28 октября 2011 года . Проверено 3 августа 2011 г.
  2. ^ Н. Хаберманн (1972) «Сортировка параллельных соседей (или слава принципа индукции)», Отчет CMU по компьютерным наукам (доступен как технический отчет AD-759 248, Национальная служба технической информации, Министерство торговли США, 5285 Port Royal Rd). Спрингфилд, Вирджиния, 22151).
  3. ^ Лакшмиварахан, С.; Дхалл, С.К. и Миллер, Л.Л. (1984), Альт, Франц Л. и Йовитс, Маршалл К. (ред.), «Алгоритмы параллельной сортировки» , « Достижения в области компьютеров » , 23 , Academic Press: 295–351, doi : 10.1016/ S0065-2458(08)60467-2 , ISBN  978-0-12-012123-6
  4. ^ Седжвик, Роберт (2003). Алгоритмы на Java, части 1–4 (3-е изд.). Аддисон-Уэсли Профессионал. стр. 454–464. ISBN  978-0-201-36120-9 .
  5. ^ Кент, Аллен ; Уильямс, Джеймс Г. (1993). Энциклопедия компьютерных наук и технологий: Приложение 14 . ЦРК Пресс. стр. 33–38. ISBN  978-0-8247-2282-1 .
  6. ^ «Пять лекций о ЦА» (PDF) . Liinwww.ira.uka.de . Проверено 30 июля 2017 г.
  7. ^ Ланг, Ганс Вернер. «Принцип 0-1» . inf.hs-flensburg.de . Проверено 30 июля 2017 г. .
  8. ^ «Распределенная сортировка» (PDF) . Net.t-labs.tu-berlin.de . Проверено 30 июля 2017 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9e05de12cf1cfb8218ef1202387a38dd__1703163600
URL1:https://arc.ask3.ru/arc/aa/9e/dd/9e05de12cf1cfb8218ef1202387a38dd.html
Заголовок, (Title) документа по адресу, URL1:
Odd–even sort - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)