PROCEDURE QSORT3(N:INTEGER) ; VAR L,I,X,W,R,S,J:INTEGER; BEGIN S:=1; STACK1[S]:=1 ; STACK2[S]:=N ; REPEAT L:=STACK1[S] ; R:=STACK2[S] ; S:=S-1; REPEAT I:=L; J:=R; X:=A[(L+R) DIV 2]; REPEAT WHILE A[I]X DO J:=J-1; IF I<=J THEN BEGIN W:=A[I]; A[I]:=A[J]; A[J]:=W; I:=I+1; J:=J-1 END; UNTIL I>J; IF I=R; UNTIL S=0 END ;