Метод основывается на
следующем: считается, что перед рассмотрением записи R[j] предыдущие записи
R[1],R[2],...,R[j-1] уже упорядочены, и R[j] вставляется в соответствующее
место. Сортировка таблицы начинается со второй записи. Ее ключ сравнивается
с ключом первой записи, и, если упорядоченность
нарушена, то записи R[1] и R[2] переставляются. Затем ключ записи R[3]
сравнивается с ключами записей R[2] и R[1]. На j - м шаге К[j] сравнивается
по очереди сK[j-1],K[j-2],...(K[1]<=K[2]<=...<=K[j-1]) до тех
пор, пока выполняется условие K[j]<K[i] (i=j-1,j-2,...)
или достигнут левый конец упорядоченной подтаблицы (i=1, K[j]<K[1]).
Выполнение условия K[j]>=K[i] означает, что запись R[j]
нужно вставить между R[i] и R[i+1]. Тогда записи R[i+1], R[i+2],...,R[j-1]
сдвигаются на одну позицию, и запись R[j] помещается в позицию i+1.
Операции сравнения и перемещения записей удобно совмещать,перемежая их
друг с другом (этот способ называется "просеиванием").
Ниже показано выполнение j-го шага сортировки ( с "просеиванием"
).
Количество операций сравнения для метода вставки определяется
по формуле
n * (n - 1)
C = ------------
4
При достаточно большом числе элементов в сортируемой таблице можно принять
C = n**2/4 . Максимальное количество перестановок при использовании
этого метода примерно равно n**2/4
Метод вставки обычно используется тогда, когда записи вносятся
в упорядоченную таблицу. Новая запись должна быть вставлена в таблицу
таким образом, чтобы существующая упорядоченность не нарушалась.
Модифицированный метод вставки ( бинарное включение
)
Метод прямого включения можно улучшить,если вставлять очередной элемент
таблицы в упорядоченную подтаблицу с помощью метода бинарного (дихотомического,двоичного,логарифмического)
поиска.
j-й шаг сортировки: