From 63c3043200de6b28a8c192f1b5625940435ea55e Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Sat, 17 Oct 2015 14:20:48 +1100 Subject: Organised source code a bit, added makefile with clean target --- sort/insertion.adb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 sort/insertion.adb (limited to 'sort/insertion.adb') diff --git a/sort/insertion.adb b/sort/insertion.adb new file mode 100644 index 0000000..863fb8e --- /dev/null +++ b/sort/insertion.adb @@ -0,0 +1,29 @@ + + +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; + -- cgit