Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Result.docx
Скачиваний:
6
Добавлен:
22.11.2019
Размер:
1.63 Mб
Скачать

5.1. Cортировка вставками

Сортировка вставками в некотором смысле является комбинацией

пузырьковой сортировки и сортировки выбором. Как при сортировке

выбором, в процессе работы в начальной части массива формируется уже

упорядоченная последовательность элементов, и, как и в пузырьковой

сортировке, поиск места вставки нового элемента в отсортированную часть

массива происходит последовательным сравнением этого элемента с

элементами отсортированной части массива.

Таким образом, на первом шаге метода полагаем, что первый эле-

мент массива уже отсортирован. В общем случае, на k итерации метода имеем отсортированную часть массива a,, akи неотсортированную часть массива a,, an. К первой части присоединяется новый элемент ak 1 и происходит поиск места его расположения сравнением с элементом ak(как при пузырьковой сортировке). Если аkа, то эти элементы меняются местами и т.д. Итерация

заканчивается, когда в результате сравнения не происходит перемены мест

этих элементов. Очевидно, что необходимо выполнить п -1 итераций.

Пример 5.1.1. Сортировкой вставками упорядочить массив

А = {8,4,6,3,7,2,1,5}.

Как и ранее, изменения исходного массива в процессе сортировки

представлены в виде последовательности массивов, каждый из которых

есть результат соответствующей итерации

1

k1

k1

(8, 4, 6, 3, 7, 2, 1, 5)

(4,8,6,3,7,2, 1,5)

(4,6,8,3,7,2,1,5)

исходный массив

1-я итерация

2-я итерация

(3,4,6,8,7,2,1,5)

(3, 4, 6, 7, 8,2,1, 5)

(2,3,4,6,7,8,1,5)

(1,2,3,4,6,7,8,5)

(1,2,3,4,5,6,7,8)

3-я итерация

4-я итерация

5-я итерация

6-я итерация

7-я итерация

Определим число операций, которые необходимо выполнить (в худшем

случае) для получения отсортированногомассива.

На первой итерации требуется выполнить одно сравнение и, возможно,

одну операцию перемен местами сравниваемых элементов. На второй

итерации уже потребуется выполнить два сравнения и столько же изменений местами элементов. Легко заметить, что на k -й итерации (k 1, ..., п 1)

потребуется выполнить k сравнений и столько же перемен местами элементов. Значит, всего (в худшем случае) нужно выполнить nn 1 операций.

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

program Insert;

(* сортировка вставками *) Uses

CRT; Const

n=8; Var

i,k,t :integer;

A :array[1..n] of integer;

begin clrscr;

for i:=l to n do A[i]:=0;

writeln ('Введите элементы массива'); for i:=l to n do

read(A[i]); Writeln;

k:=l; (* номер итерации *) repeat

k:=k+l;

Writeln(k-1,’-я итерация:’); for i:=k downto 2 do

if A[i]<A[i-l] then begin

t:=A[i]; A[i-1]:=t; end;

for i:=l to n do Write(A[i],’ ‘);

Writeln; until(k=n); end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]