(*~\Глагол\Приложения\Упорядочивание\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                           ОТДЕЛ Вставкой2;
(*============================================================================*
 * НАЗНАЧЕНИЕ: упорядочивание ряда двоичной вставкой
 *============================================================================*)

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Упорядочить-(ряд+:РЯД ИЗ ЦЕЛ);
(*
 * Цель:  упорядочивание ряда целых чисел двоичной вставкой
 * До:    <ряд> - исходный ряд
 * После: <ряд> - упорядоченный ряд
 *)
ПЕР
  число:ЦЕЛ;     (* обрабатываемое число *)
  позНеуп:ЦЕЛ;   (* до этой позиции ряд уже упорядочен *)
  позВставки:ЦЕЛ;(* позиция вставки для обрабатываемого числа *)
  позНачала,поз:ЦЕЛ;
УКАЗ
  ОТ позНеуп:=1 ДО РАЗМЕР(ряд)-1 ВЫП
    число:=ряд[позНеуп];
                            (* двоичный поиск позиции вставки *)
    позНачала:=0; позВставки:=позНеуп;
    ПОКА позНачала < позВставки ВЫП
      поз:=(позВставки+позНачала) ДЕЛИТЬ 2;
      ЕСЛИ число >= ряд[поз] ТО
        позВставки:=поз
      ИНАЧЕ
        позНачала:=поз+1
      КОН
    КОН;
                               (* раздвигаем в этом месте ряд *)
    ОТ поз:=позНеуп-1 ДО позВставки ПО -1 ВЫП
      ряд[поз+1]:=ряд[поз]
    КОН;
                                      (* вставляем туда число *)
    ряд[позВставки]:=число
  КОН
КОН Упорядочить;

КОН Вставкой2.
