Массив разделяется на две части: отсортированную и неотсортированную. Элементы из неотсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядочность элементов.
В начале работы алгоритмы в качестве отсортированной части массива принимают только один первый элемент, а в качестве неотсортированной части – все остальные элементы.
Таким образом, алгоритм будет состоять из n – 1-го прохода (n – размерность массива), каждый из которых будет включать четыре действия:
Взятие очередного i-го неотсортированного элемента и сохранение его дополнительной переменной.
Поиск позиции j в отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов.
Сдвиг элементов массива от i – 1-го до j-го вправо, чтобы освободить найденную позицию вставки.
Вставка взятого элемента в найденную j-ю позицию.
1 шаг:
3
2 шаг:
1
3 шаг:
1
4 шаг:
1
5 шаг:
1
Результат:
БЛОК – СХЕМА
I = 2
Æ 1
J = 1
R = A(I)
IR =
Æ 1
I = I + I
1 Æ
IR = 1
1 Æ
J = J+1
K = I - 1
1
A(J) = R
IR = 2
A(K+1) = A(K)
K = K - 1
Программа, реализующая рассмотренный алгоритм, будет иметь следующий вид.