Внутренняя сортировка
Существует по крайней мере пять широких классов алгоритмов внутренней сортировки.
- Вставка. На -м этапе-е имя помещается на надлежащее место между
уже отсортированным именами:
![](image/14-01.jpg)
- Обмен. Два имени, расположение которых не соответствует порядку, меняются местами (обмен). Эти процедуры повторяются до тех пор, пока остаются такие пары.
![](image/14-02.jpg)
- Выбор. На -м этапе из неотсортированных имен выбирается-е наибольшее (наименьшее) имя и помещается на соответствующее место.
![](image/14-03.jpg)
- Распределение. Имена распределяются по группам, и содержимое групп затем объединяется таким образом, чтобы частично отсортировать таблицу; процесс повторяется до тех пор, пока таблица не будет отсортирована полностью.
- Слияние. Таблица делится на подтаблицы, которые сортируются по отдельности и затем сливаются в одну.
![](image/14-04.jpg)
Эти классы нельзя назвать ни взаимоисключающими, ни исчерпывающими: одни алгоритмы сортировки можно с полным основанием отнести более чем к одному классу (пузырьковую сортировку можно рассматривать и как выбор, и как обмен), а другие не укладываются ни в один из классов. Тем не менее, перечисленные пять классов достаточно удобны для классификации обсуждаемых алгоритмов сортировки.
Сосредоточим внимание на первых четырех классах алгоритмов сортировки. Алгоритмы, основанные на слиянии, приемлемы для внутренней сортировки, но более естественно рассматривать их как методы внешней сортировки.
В описываемых алгоритмах сортировки имена образуют последовательность, которую будем обозначать
![](../../../../img/tex/2/c/0/2c08dc1a19cc3a837751b3b6bf18965a.png)
![](../../../../img/tex/1/b/9/1b9e5d349e1f115fb1bc9aa38714891e.png)
![](../../../../img/tex/1/d/f/1df64ea0f1059020848a106b16840dc5.png)
![](../../../../img/tex/1/b/9/1b9e5d349e1f115fb1bc9aa38714891e.png)
![](../../../../img/tex/1/d/f/1df64ea0f1059020848a106b16840dc5.png)
![](../../../../img/tex/1/b/9/1b9e5d349e1f115fb1bc9aa38714891e.png)
![](../../../../img/tex/1/d/f/1df64ea0f1059020848a106b16840dc5.png)
![](../../../../img/tex/c/2/c/c2cb24ad942484dd4e4516cb88be9072.png)
![](../../../../img/tex/1/b/9/1b9e5d349e1f115fb1bc9aa38714891e.png)
![](../../../../img/tex/6/1/4/61426c0b041b1655a6878f6b3add4998.png)
![](../../../../img/tex/c/e/0/ce052773e930c3684c78f3605722055f.png)
![](../../../../img/tex/9/3/7/93754d2f943328c7b7f6695a8ad5fc24.png)
![](../../../../img/tex/1/b/9/1b9e5d349e1f115fb1bc9aa38714891e.png)
![](../../../../img/tex/6/5/f/65fcce84d5ddcbd628f0efe9f3776c1a.png)
![](../../../../img/tex/6/1/4/61426c0b041b1655a6878f6b3add4998.png)
![](../../../../img/tex/9/3/7/93754d2f943328c7b7f6695a8ad5fc24.png)
Таким образом, операция
![](../../../../img/tex/7/c/a/7caced58be5b4e34d631597e5390260b.png)
Однако это условие всегда обязательно восстанавливается.
В каждом из рассматриваемых алгоритмов будем считать, что имена нужно сортировать на месте. Другими словами, переразмещение имен должно происходить внутри последовательности
![](../../../../img/tex/2/c/0/2c08dc1a19cc3a837751b3b6bf18965a.png)
![](../../../../img/tex/2/c/0/2c08dc1a19cc3a837751b3b6bf18965a.png)