{ Beseitigung der Rekursion               }
{ vom Quicksort *spritz* :-)              }
{ Autor: Dipl.-Ing. Thomas Speiser        }
{ Source from: http://Codes.TurboTools.de }

program iterativ;
uses Crt;
const n = 5;
type feld = array[1..n] of shortint;

var  zahl,tmp: feld;
     i: shortint;

var stack_array : array[1..1000] of shortint;
    cnt         : integer;

{ easy Stack }
function stackempty : boolean;
begin
  stackempty := (cnt = 0);
end;

function pop: shortint;
begin
  if stackempty
  then pop := 0
  else begin
         pop := stack_array[cnt];
	 dec(cnt);
       end;
end;

procedure push(e: shortint);
begin
  inc(cnt);
  stack_array[cnt] := e;
end;

procedure stack_init;
begin
 cnt:=0;
end;

procedure quicksort(var zahl: feld);

  procedure sort(l,r: byte);
  var j,k,vglzahl,platzhalter:byte;
  label l0;
  begin
  push(r); push(l);
  l0:
{    repeat}
{      j:=l;
       k:=r;
}     j:=pop;
      k:=pop;
      vglzahl:=zahl[(j+k) div 2];
	    repeat
        while zahl[j]< vglzahl do j:=j+1;
        while vglzahlk;
      if l