Википедия

Сортировка вставками

Сортировка вставками (англ. Insertion sort) — алгоритм сортировки, в котором элементы входной последовательности просматриваются по одному, и каждый новый поступивший элемент размещается в подходящее место среди ранее упорядоченных элементов. Вычислительная сложность — .

Сортировка вставками
image
Пример сортировки вставками
Предназначение Алгоритм сортировки
Структура данных Массив
Худшее время сравнений, обменов
Лучшее время сравнений, 0 обменов
Среднее время сравнений, обменов
Затраты памяти всего, вспомогательный
image Медиафайлы на Викискладе

Описание

image
Пример сортировки вставками

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

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

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

Псевдокод

На вход процедуре сортировки подаётся массив image, состоящий из элементов последовательности image, которые требуется отсортировать. image соответствует image — размеру исходного массива. Для сортировки не требуется привлечения дополнительной памяти, кроме постоянной величины для одного элемента, так как выполняется перестановка в пределах массива. В результате работы процедуры во входном массиве оказывается требуемая выходная последовательность элементов.

Псевдокод алгоритма:

for j = 2 to A.length do key = A[j] i = j-1 while (i > 0 and A[i] > key) do A[i + 1] = A[i] i = i - 1 end while A[i+1] = key end 
for i = 2 to n do x = A[i] j = i while (j > 1 and A[j-1] > x) do A[j] = A[j-1] j = j - 1 end while A[j] = x end for
A[0] = -image for i = 2 to n do j = i while (j > 0 and A[j] < A[j - 1]) do swap (A[j], A[j - 1]) j = j - 1 end while end for

В последнем варианте обмен x = A[j]; A[j] = A[j-1]; A[j-1] = x представлен операцией swap из-за чего он немного медленнее. Значение введённого А[0] меньше любого значения остальных элементов.

Анализ алгоритма

Время выполнения алгоритма зависит от входных данных: чем большее множество нужно отсортировать, тем большее время потребуется для выполнения сортировки. Также на время выполнения влияет исходная упорядоченность массива. Время работы алгоритма для различных входных данных одинакового размера зависит от элементарных операций, или шагов, которые потребуется выполнить.

Для каждой инструкции алгоритма введём временную стоимость и количество повторений, где image — количество проверок условия во внутреннем цикле while:

Код Стоимость Повторы
for j = 2 to A.length image image
key = A[j] image image
i = j — 1 image image
while i > 0 and A[i] > key image image
A[i+1] = A[i] image image
i = i — 1 image image
A[i+1] = key image image

Время работы алгоритма сортировки вставками — это сумма времён работы каждого шага: image.

Самым благоприятным случаем является отсортированный массив. При этом все внутренние циклы состоят всего из одной итерации, то есть image для всех image. Тогда время работы алгоритма составит image. Время работы линейно зависит от размера входных данных.

Анализ наихудшего случая

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

image

image.

Время работы является квадратичной функцией от размера входных данных.

Анализ среднего случая

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

image

Для оценки среднего времени работы для image элементов нужно просуммировать:

image

image

Временная сложность алгоритма — image. Однако, из-за константных множителей и членов более низкого порядка алгоритм с более высоким порядком роста может выполняться для небольших входных данных быстрее, чем алгоритм с более низким порядком роста.

См. также

  • Список алгоритмов сортировки
  • Сортировка пузырьком
  • Сортировка выбором
  • Гномья сортировка

Примечания

  1. Кнут Д. Э. 5.2 Внутренняя сортировка // Искусство программирования. Том 3. Сортировка и поиск = The Art of Computer Programming. Volume 3. Sorting and Searching / под ред. В. Т. Тертышного (гл. 5) и И. В. Красикова (гл. 6). — 2-е изд. — Москва: Вильямс, 2007. — Т. 3. — 832 с. — ISBN 5-8459-0082-1.
  2. Кормен, 2013, p. 38.
  3. Кормен, 2013, p. 39.
  4. Кнут Д. Э. 5.2.1 Сортировка путём вставок // Искусство программирования. Том 3. Сортировка и поиск = The Art of Computer Programming. Volume 3. Sorting and Searching / под ред. В. Т. Тертышного (гл. 5) и И. В. Красикова (гл. 6). — 2-е изд. — Москва: Вильямс, 2007. — Т. 3. — 832 с. — ISBN 5-8459-0082-1.
  5. Кормен, 2013, p. 39—40.
  6. Н. Вирт. Алгоритмы и структуры данных. — М.: ДМК Пресс, 2010. — С. 74. — 272 с. — ISBN 987-5-94074-584-6.
  7. Скиена С. Алгоритмы. Руководство по разработке. — 2-е. — СПб.: БХВ-Петербург, 2014. — С. 137. — 720 с. — ISBN 978-5-9775-0560-4.
  8. Ахо, 2000, p. 237.
  9. Кормен, 2013, p. 47.
  10. Кормен, 2013, p. 48.
  11. Кормен, 2013, p. 48—49.
  12. Кормен, 2013, p. 49.
  13. Кормен, 2013, p. 49—50.
  14. Макконнелл, 2004, p. 74.
  15. Макконнелл, 2004, p. 75.
  16. Макконнелл, 2004, p. 75—76.
  17. Кормен, 2013, p. 51.

Литература

  • Ахо А. В., Хопкрофт Д. Э., Ульман Д. Д. Структуры данных и алгоритмы = Data structures and algorithms / Под ред. А. А. Минько. — М.: Вильямс, 2000. — С. 231. — ISBN 5-8459-0122-7.
  • Кнут Д. Э. 5.2.1 Сортировка путём вставок // Искусство программирования. Том 3. Сортировка и поиск = The Art of Computer Programming. Volume 3. Sorting and Searching / под ред. В. Т. Тертышного (гл. 5) и И. В. Красикова (гл. 6). — 2-е изд. — Москва: Вильямс, 2007. — Т. 3. — 832 с. — ISBN 5-8459-0082-1.
  • Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. 2.1. Сортировка вставкой // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 3-е изд. — М.: Вильямс, 2013. — С. 38—45. — ISBN 5-8459-1794-8.
  • Макконнелл Дж. Основы современных алгоритмов = Analysis of Algorithms: An Active Learning Approach / Под ред. С. К. Ландо. — М.: Техносфера, 2004. — С. 72—76. — ISBN 5-94836-005-9.

Ссылки

  • Сортировка вставками
  • Реализация сортировки вставками на Pascal и C++
  • Анимированное представление алгоритма сортировки вставками

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Сортировка вставками, Что такое Сортировка вставками? Что означает Сортировка вставками?

Sortirovka vstavkami angl Insertion sort algoritm sortirovki v kotorom elementy vhodnoj posledovatelnosti prosmatrivayutsya po odnomu i kazhdyj novyj postupivshij element razmeshaetsya v podhodyashee mesto sredi ranee uporyadochennyh elementov Vychislitelnaya slozhnost O n2 displaystyle O n 2 Sortirovka vstavkamiPrimer sortirovki vstavkamiPrednaznachenie Algoritm sortirovkiStruktura dannyh MassivHudshee vremya O n2 displaystyle O n 2 sravnenij obmenovLuchshee vremya O n displaystyle O n sravnenij 0 obmenovSrednee vremya O n2 displaystyle O n 2 sravnenij obmenovZatraty pamyati O n displaystyle O n vsego O 1 displaystyle O 1 vspomogatelnyj Mediafajly na VikiskladeOpisaniePrimer sortirovki vstavkami Na vhod algoritma podayotsya posledovatelnost n displaystyle n chisel a1 a2 an displaystyle a 1 a 2 a n Sortiruemye chisla takzhe nazyvayut klyuchami Vhodnaya posledovatelnost na praktike predstavlyaetsya v vide massiva s n displaystyle n elementami Na vyhode algoritm dolzhen vernut perestanovku ishodnoj posledovatelnosti a1 a2 an displaystyle a 1 a 2 a n chtoby vypolnyalos sleduyushee sootnoshenie a1 a2 an displaystyle a 1 leqslant a 2 leqslant leqslant a n V nachalnyj moment otsortirovannaya posledovatelnost pusta Na kazhdom shage algoritma vybiraetsya odin iz elementov vhodnyh dannyh i pomeshaetsya na nuzhnuyu poziciyu v uzhe otsortirovannoj posledovatelnosti do teh por poka nabor vhodnyh dannyh ne budet ischerpan V lyuboj moment vremeni v otsortirovannoj posledovatelnosti elementy udovletvoryayut trebovaniyam k vyhodnym dannym algoritma Dannyj algoritm mozhno uskorit pri pomoshi ispolzovaniya binarnogo poiska dlya nahozhdeniya mesta tekushemu elementu v otsortirovannoj chasti Problema s dolgim sdvigom massiva vpravo reshaetsya pri pomoshi smeny ukazatelej PsevdokodNa vhod procedure sortirovki podayotsya massiv A 1 n displaystyle A 1 n sostoyashij iz elementov posledovatelnosti A 1 A 2 A n displaystyle A 1 A 2 A n kotorye trebuetsya otsortirovat n displaystyle n sootvetstvuet A length displaystyle A mathrm length razmeru ishodnogo massiva Dlya sortirovki ne trebuetsya privlecheniya dopolnitelnoj pamyati krome postoyannoj velichiny dlya odnogo elementa tak kak vypolnyaetsya perestanovka v predelah massiva V rezultate raboty procedury vo vhodnom massive okazyvaetsya trebuemaya vyhodnaya posledovatelnost elementov Psevdokod algoritma for j 2 to A length do key A j i j 1 while i gt 0 and A i gt key do A i 1 A i i i 1 end while A i 1 key end for i 2 to n do x A i j i while j gt 1 and A j 1 gt x do A j A j 1 j j 1 end while A j x end for A 0 displaystyle infty for i 2 to n do j i while j gt 0 and A j lt A j 1 do swap A j A j 1 j j 1 end while end for V poslednem variante obmen x A j A j A j 1 A j 1 x predstavlen operaciej swap iz za chego on nemnogo medlennee Znachenie vvedyonnogo A 0 menshe lyubogo znacheniya ostalnyh elementov Analiz algoritmaVremya vypolneniya algoritma zavisit ot vhodnyh dannyh chem bolshee mnozhestvo nuzhno otsortirovat tem bolshee vremya potrebuetsya dlya vypolneniya sortirovki Takzhe na vremya vypolneniya vliyaet ishodnaya uporyadochennost massiva Vremya raboty algoritma dlya razlichnyh vhodnyh dannyh odinakovogo razmera zavisit ot elementarnyh operacij ili shagov kotorye potrebuetsya vypolnit Dlya kazhdoj instrukcii algoritma vvedyom vremennuyu stoimost i kolichestvo povtorenij gde tj displaystyle t j kolichestvo proverok usloviya vo vnutrennem cikle while Kod Stoimost Povtoryfor j 2 to A length c1 displaystyle c 1 n displaystyle n key A j c2 displaystyle c 2 n 1 displaystyle n 1 i j 1 c3 displaystyle c 3 n 1 displaystyle n 1 while i gt 0 and A i gt key c4 displaystyle c 4 j 2ntj displaystyle sum j 2 n t j A i 1 A i c5 displaystyle c 5 j 2n tj 1 displaystyle sum j 2 n t j 1 i i 1 c6 displaystyle c 6 j 2n tj 1 displaystyle sum j 2 n t j 1 A i 1 key c7 displaystyle c 7 n 1 displaystyle n 1 Vremya raboty algoritma sortirovki vstavkami eto summa vremyon raboty kazhdogo shaga T n c1n c2 n 1 c3 n 1 c4 j 2ntj c5 j 2n tj 1 c6 j 2n tj 1 c7 n 1 displaystyle T n c 1 n c 2 n 1 c 3 n 1 c 4 sum j 2 n t j c 5 sum j 2 n t j 1 c 6 sum j 2 n t j 1 c 7 n 1 Samym blagopriyatnym sluchaem yavlyaetsya otsortirovannyj massiv Pri etom vse vnutrennie cikly sostoyat vsego iz odnoj iteracii to est tj 1 displaystyle t j 1 dlya vseh j displaystyle j Togda vremya raboty algoritma sostavit T n c1 c2 c3 c4 c7 n c2 c3 c4 c7 O n displaystyle T n c 1 c 2 c 3 c 4 c 7 n c 2 c 3 c 4 c 7 O n Vremya raboty linejno zavisit ot razmera vhodnyh dannyh Analiz naihudshego sluchaya Naihudshim sluchaem yavlyaetsya massiv otsortirovannyj v poryadke obratnom nuzhnomu Pri etom kazhdyj novyj element sravnivaetsya so vsemi v otsortirovannoj posledovatelnosti Eto oznachaet chto vse vnutrennie cikly sostoyat iz j iteracij to est tj j displaystyle t j j dlya vseh j displaystyle j Togda vremya raboty algoritma sostavit T n c1n c2 n 1 c3 n 1 c4 j 2nj c5 j 2n j 1 c6 j 2n j 1 c7 n 1 displaystyle T n c 1 n c 2 n 1 c 3 n 1 c 4 sum j 2 n j c 5 sum j 2 n j 1 c 6 sum j 2 n j 1 c 7 n 1 T n c1n c2 n 1 c3 n 1 c4 n n 1 2 1 c5n n 1 2 c6n n 1 2 c7 n 1 O n2 displaystyle T n c 1 n c 2 n 1 c 3 n 1 c 4 left frac n n 1 2 1 right c 5 frac n n 1 2 c 6 frac n n 1 2 c 7 n 1 O n 2 Vremya raboty yavlyaetsya kvadratichnoj funkciej ot razmera vhodnyh dannyh Analiz srednego sluchaya Dlya analiza srednego sluchaya nuzhno poschitat srednee chislo sravnenij neobhodimyh dlya opredeleniya polozheniya ocherednogo elementa Pri dobavlenii novogo elementa potrebuetsya kak minimum odno sravnenie dazhe esli etot element okazalsya v pravilnoj pozicii i displaystyle i j dobavlyaemyj element mozhet zanimat odno iz i 1 displaystyle i 1 polozhenij Predpolagaya sluchajnye vhodnye dannye novyj element ravnoveroyatno mozhet okazatsya v lyuboj pozicii Srednee chislo sravnenij dlya vstavki i displaystyle i go elementa Ti 1i 1 p 1ip i 1i 1 i i 1 2 i i2 1 1i 1 displaystyle T i frac 1 i 1 left sum p 1 i p i right frac 1 i 1 left frac i i 1 2 i right frac i 2 1 frac 1 i 1 Dlya ocenki srednego vremeni raboty dlya n displaystyle n elementov nuzhno prosummirovat T n i 1n 1Ti i 1n 1 i2 1 1i 1 i 1n 1i2 i 1n 11 i 1n 1 1i 1 displaystyle T n sum i 1 n 1 T i sum i 1 n 1 left frac i 2 1 frac 1 i 1 right sum i 1 n 1 frac i 2 sum i 1 n 1 1 sum i 1 n 1 left frac 1 i 1 right T n n2 n4 n 1 ln n 1 O n2 displaystyle T n approx frac n 2 n 4 n 1 ln n 1 O n 2 Vremennaya slozhnost algoritma O n2 displaystyle O n 2 Odnako iz za konstantnyh mnozhitelej i chlenov bolee nizkogo poryadka algoritm s bolee vysokim poryadkom rosta mozhet vypolnyatsya dlya nebolshih vhodnyh dannyh bystree chem algoritm s bolee nizkim poryadkom rosta Sm takzheSpisok algoritmov sortirovki Sortirovka puzyrkom Sortirovka vyborom Gnomya sortirovkaPrimechaniyaKnut D E 5 2 Vnutrennyaya sortirovka Iskusstvo programmirovaniya Tom 3 Sortirovka i poisk The Art of Computer Programming Volume 3 Sorting and Searching pod red V T Tertyshnogo gl 5 i I V Krasikova gl 6 2 e izd Moskva Vilyams 2007 T 3 832 s ISBN 5 8459 0082 1 Kormen 2013 p 38 Kormen 2013 p 39 Knut D E 5 2 1 Sortirovka putyom vstavok Iskusstvo programmirovaniya Tom 3 Sortirovka i poisk The Art of Computer Programming Volume 3 Sorting and Searching pod red V T Tertyshnogo gl 5 i I V Krasikova gl 6 2 e izd Moskva Vilyams 2007 T 3 832 s ISBN 5 8459 0082 1 Kormen 2013 p 39 40 N Virt Algoritmy i struktury dannyh M DMK Press 2010 S 74 272 s ISBN 987 5 94074 584 6 Skiena S Algoritmy Rukovodstvo po razrabotke 2 e SPb BHV Peterburg 2014 S 137 720 s ISBN 978 5 9775 0560 4 Aho 2000 p 237 Kormen 2013 p 47 Kormen 2013 p 48 Kormen 2013 p 48 49 Kormen 2013 p 49 Kormen 2013 p 49 50 Makkonnell 2004 p 74 Makkonnell 2004 p 75 Makkonnell 2004 p 75 76 Kormen 2013 p 51 LiteraturaAho A V Hopkroft D E Ulman D D Struktury dannyh i algoritmy Data structures and algorithms Pod red A A Minko M Vilyams 2000 S 231 ISBN 5 8459 0122 7 Knut D E 5 2 1 Sortirovka putyom vstavok Iskusstvo programmirovaniya Tom 3 Sortirovka i poisk The Art of Computer Programming Volume 3 Sorting and Searching pod red V T Tertyshnogo gl 5 i I V Krasikova gl 6 2 e izd Moskva Vilyams 2007 T 3 832 s ISBN 5 8459 0082 1 Kormen T Lejzerson Ch Rivest R Shtajn K 2 1 Sortirovka vstavkoj Algoritmy postroenie i analiz Introduction to Algorithms Pod red I V Krasikova 3 e izd M Vilyams 2013 S 38 45 ISBN 5 8459 1794 8 Makkonnell Dzh Osnovy sovremennyh algoritmov Analysis of Algorithms An Active Learning Approach Pod red S K Lando M Tehnosfera 2004 S 72 76 ISBN 5 94836 005 9 SsylkiImeetsya vikiuchebnik po teme Realizacii algoritmov Sortirovka Vstavkami Sortirovka vstavkami Realizaciya sortirovki vstavkami na Pascal i C Animirovannoe predstavlenie algoritma sortirovki vstavkami

NiNa.Az

NiNa.Az - Абсолютно бесплатная система, которая делится для вас информацией и контентом 24 часа в сутки.
Взгляните
Закрыто