Jump to content

медленная сортировка

Slowsort — это алгоритм сортировки . Оно носит юмористический характер и бесполезно. Это неохотный алгоритм , основанный на принципе « умножай и сдавайся» ( пародия , образованная путем использования противоположностей « разделяй и властвуй» ). Он был опубликован в 1984 году Андреем Бродером и Хорхе Столфи в их статье «Пессимальные алгоритмы и анализ симплексности». [1] (пародия на оптимальные алгоритмы и анализ сложности ).

Алгоритм

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

Медленная сортировка — это рекурсивный алгоритм .

Это реализация в псевдокоде:

procedure slowsort(A[], start_idx, end_idx)        // Sort array range A[start ... end] in-place.
    if start_idx  end_idx then
        return

    middle_idx := floor( (start_idx + end_idx)/2 )
    slowsort(A, start_idx, middle_idx)             // (1.1)
    slowsort(A, middle_idx + 1, end_idx)           // (1.2)
    if A[end_idx] < A[middle_idx] then
        swap (A, end_idx, middle_idx)          // (1.3)

    slowsort(A, start_idx, end_idx - 1)            // (2)
  • Сортируем первую половину рекурсивно. (1.1)
  • Сортируем вторую половину рекурсивно. (1.2)
  • Найдите максимум всего массива, сравнив результаты 1.1 и 1.2, и поместите его в конец списка. (1,3)
  • Отсортируйте весь список (кроме максимального значения в конце) рекурсивно. (2)

Неоптимизированная реализация на Haskell (чисто функциональная) может выглядеть следующим образом:

slowsort :: (Ord a) => [a] -> [a]
slowsort xs
  | length xs <= 1 = xs
  | otherwise      = slowsort xs' ++ [max llast rlast]  -- (2)
  where m     = length xs `div` 2
        l     = slowsort $ take m xs  -- (1.1)
        r     = slowsort $ drop m xs  -- (1.2)
        llast = last l
        rlast = last r
        xs'   = init l ++ min llast rlast : init r

Сложность

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

Время выполнения для медленной сортировки .

Нижняя асимптотическая оценка для в Ландау обозначениях для любого .

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

  1. ^ Андрей Бродер; Хорхе Столфи (1984). «Пессимальные алгоритмы и анализ симплексности» (PDF) . Новости ACM SIGACT . 16 (3): 49–53. CiteSeerX   10.1.1.116.9158 . дои : 10.1145/990534.990536 . S2CID   6566140 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 38edf74c9407ed19f6eb7cf8ab8d61f2__1715944020
URL1:https://arc.ask3.ru/arc/aa/38/f2/38edf74c9407ed19f6eb7cf8ab8d61f2.html
Заголовок, (Title) документа по адресу, URL1:
Slowsort - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)