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 --- quick.adb | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 quick.adb (limited to 'quick.adb') diff --git a/quick.adb b/quick.adb deleted file mode 100644 index 4586b3b..0000000 --- a/quick.adb +++ /dev/null @@ -1,49 +0,0 @@ - - -package body Quick is - - - procedure Swap(A, B : in out Element_T) is - Temp : Element_T; - begin - Temp := A; - A := B; - B := Temp; - end Swap; - - - procedure In_Place(Arr : in out Array_T) is - Pivot, Left, Right : Index_T; - begin - if Arr'Length <= 1 then - return; - end if; - - Pivot := Arr'First; - Left := Index_T'Succ(Pivot); - Right := Arr'Last; - - loop - while not (Arr(Left) > Arr(Pivot)) and Left < Arr'Last loop - Left := Index_T'Succ(Left); - end loop; - while Arr(Right) > Arr(Pivot) and Right > Arr'First loop - Right := Index_T'Pred(Right); - end loop; - exit when Left >= Right; - Swap(Arr(Left), Arr(Right)); - end loop; - - Swap(Arr(Pivot), Arr(Right)); - - if Right > Arr'First then - In_Place( Arr(Arr'First .. Index_T'Pred(Right)) ); - end if; - if Right < Arr'Last then - In_Place( Arr(Index_T'Succ(Right) .. Arr'Last) ); - end if; - end In_Place; - - -end Quick; - -- cgit