28 lines
778 B
Ada
28 lines
778 B
Ada
with GNAT.Heap_Sort_G;
|
|
function sort1 (S : String) return String is
|
|
Result : String (1 .. S'Length) := S;
|
|
Temp : Character;
|
|
|
|
procedure Move (From : Natural; To : Natural) is
|
|
begin
|
|
if From = 0 then Result (To) := Temp;
|
|
elsif To = 0 then Temp := Result (From);
|
|
else Result (To) := Result (From);
|
|
end if;
|
|
end Move;
|
|
|
|
function Lt (Op1, Op2 : Natural) return Boolean is
|
|
begin
|
|
if Op1 = 0 then return Temp < Result (Op2);
|
|
elsif Op2 = 0 then return Result (Op1) < Temp;
|
|
else return Result (Op1) < Result (Op2);
|
|
end if;
|
|
end Lt;
|
|
|
|
package SP is new GNAT.Heap_Sort_G (Move, Lt);
|
|
|
|
begin
|
|
SP.Sort (S'Length);
|
|
return Result;
|
|
end;
|