Соритировка бинарными вставками

 

Procedure Insert_Bin(Var A: TArr1);

Var i, j, Sr, L, R: TInd;

Key: TEL;

Begin

For i:=2 To N Do

If A[i-1]>A[i] Then Begin

Key:=A[i];

L:=1; R:=i;

Repeat

Sr:= (L + R) div 2;

If A[Sr]<Key Then L := Sr + 1

Else R := Sr - 1;

Until L > R;

For j:= i-1 DownTo L do A[j+1] := A[j];

A[L]:= Key;

End;

End;

Сортировку простыми вставками можно немного улучшить путем поиска «потходяшего места» в упорядоченной последовательности более экономичным способом, бинарный поиск,дихотомия. Схема алгоритма основана на методе деление отрезка попалам, который часто использеться при реализации численных методов.(поиск корня и т.п). Он позволяет после каждого сравнения, обрабатываимую последовательность сокращать в два раза. Эффективность алгоритма O(N^2).