Jump to content

Гном сортирует

Гном сортирует
Визуализация сортировки Gnome
Сорт Алгоритм сортировки
Структура данных Множество
Худшая производительность
Лучшая производительность
Средняя производительность
Наихудшая пространственная сложность вспомогательный

Сортировка Gnome (по прозвищу « тупая сортировка ») — это вариант вставками алгоритма сортировки , который не использует вложенные циклы. Сортировка гномов была первоначально предложена иранским ученым-компьютерщиком Хамидом Сарбази-Азадом (профессором компьютерных наук и инженерии в Технологическом университете Шарифа ). [1] в 2000 году. Впервые сорт назвали глупым сортом. [2] (не путать с bogosort ), а затем позже описан Диком Груном и назван гномской сортировкой . [3]

Сортировка Gnome выполняет по крайней мере столько же сравнений, сколько и сортировка вставками , и имеет те же времени выполнения асимптотические характеристики . Сортировка Gnome работает путем построения отсортированного списка по одному элементу за раз, помещая каждый элемент в нужное место в серии перестановок. Среднее время работы составляет O ( n 2 ), но стремится к O ( n ), если список изначально почти отсортирован. [4] [примечание 1]

Дик Грюн описал метод сортировки следующей историей: [3]

Сортировка гномов основана на технике, используемой стандартным голландским садовым гномом (Du.: tuinkabouter ).
Вот как садовый гном сортирует ряд цветочных горшков .
В основном он смотрит на цветочный горшок рядом с ним и на предыдущий; если они расположены в правильном порядке, он делает шаг на один горшок вперед, в противном случае он меняет их местами и делает шаг назад на один горшок.
Граничные условия: если предыдущего горшка нет, он делает шаг вперед; если рядом с ним нет горшка, он готов.

«Сортировка Gnome — простейший алгоритм сортировки». Dickgrune.com

Псевдокод

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

Вот псевдокод для сортировки gnome с использованием массива с отсчетом от нуля :

 procedure gnomeSort(a[]):
   pos := 0
   while pos < length(a):
       if (pos == 0 or a[pos] >= a[pos-1]):
           pos := pos + 1
       else:
           swap a[pos] and a[pos-1]
           pos := pos - 1

Учитывая несортированный массив a = [5, 3, 2, 4], сортировка gnome выполняет следующие шаги во время цикла while. Текущая позиция выделена жирным шрифтом и указана как значение переменной. pos.

Текущий массив pos Действующее условие Действия, которые необходимо предпринять
[ 5 , 3, 2, 4] 0 позиция == 0 увеличить позицию
[5, 3 , 2, 4] 1 а[поз.] < а[поз.-1] поменять местами, уменьшить позицию
[ 3 , 5, 2, 4] 0 позиция == 0 увеличить позицию
[3, 5 , 2, 4] 1 а[поз.] ≥ а[поз.-1] увеличить позицию
[3, 5, 2 , 4] 2 а[поз.] < а[поз.-1] поменять местами, уменьшить позицию
[3, 2 , 5, 4] 1 а[поз.] < а[поз.-1] поменять местами, уменьшить позицию
[ 2 , 3, 5, 4] 0 позиция == 0 увеличить позицию
[2, 3 , 5, 4] 1 а[поз.] ≥ а[поз.-1] увеличить позицию
[2, 3, 5 , 4] 2 а[поз.] ≥ а[поз.-1] увеличение позиции:
[2, 3, 5, 4 ] 3 а[поз.] < а[поз.-1] поменять местами, уменьшить позицию
[2, 3, 4 , 5] 2 а[поз.] ≥ а[поз.-1] увеличить позицию
[2, 3, 4, 5 ] 3 а[поз.] ≥ а[поз.-1] увеличить позицию
[2, 3, 4, 5] 4 поз == длина(а) законченный

Примечания

[ редактировать ]
  1. ^ Почти отсортировано означает, что каждый элемент в списке находится недалеко от своего правильного положения (не дальше некоторого небольшого постоянного расстояния).
  1. ^ Хамид, Сарбази-Азад. «Профильная страница Хамида Сарбази-Азада» . Архивировано из оригинала 16 октября 2018 г. Проверено 16 октября 2018 г.
  2. ^ Сарбази-Азад, Хамид (2 октября 2000 г.). «Глупая сортировка: новый алгоритм сортировки» (PDF) . Информационный бюллетень (599). Кафедра компьютерных наук, Univ. Глазго: 4. Архивировано (PDF) из оригинала 7 марта 2012 года . Проверено 25 ноября 2014 г.
  3. Перейти обратно: Перейти обратно: а б «Сортировка Gnome — простейший алгоритм сортировки» . Дикгрюн.com . 2000-10-02. Архивировано из оригинала 31 августа 2017 г. Проверено 20 июля 2017 г.
  4. ^ Пол Э. Блэк. «гномий сорт» . Словарь алгоритмов и структур данных . Национальный институт стандартов и технологий США. Архивировано из оригинала 11 августа 2011 г. Проверено 20 августа 2011 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1e979b9e6fba3ec55374dc46b40c9b16__1717509180
URL1:https://arc.ask3.ru/arc/aa/1e/16/1e979b9e6fba3ec55374dc46b40c9b16.html
Заголовок, (Title) документа по адресу, URL1:
Gnome sort - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)