package body Insertion is procedure Sort(Arr : in out Array_T) is Place : Index_T; Temp : Element_T; begin if Arr'Length <= 1 then return; end if; for I in Index_T range Index_T'Succ(Arr'First) .. Arr'Last loop if Arr(Index_T'Pred(I)) > Arr(I) then Place := I; while Place /= Arr'First and then Arr(Index_T'Pred(Place)) > Arr(I) loop Place := Index_T'Pred(Place); end loop; Temp := Arr(I); Arr(Index_T'Succ(Place) .. I) := Arr(Place .. Index_T'Pred(I)); Arr(Place) := Temp; end if; end loop; end Sort; end Insertion;