--- /dev/null
+ PROCEDURE SORT(L,R: INDEX);
+ VAR I,J: INDEX; X,H: ITEM;
+
+ BEGIN I := L; J := R;
+ X := A[ (L+R) DIV 2 ];
+ REPEAT
+ WHILE A[I]<X DO I := I+1;
+ WHILE X<A[J] DO J := J-1;
+ IF I<=J THEN
+ BEGIN H := A[I]; A[I] := A[J]; A[J] := H;
+ I := I+1; J := J-1
+ END
+ UNTIL I>J;
+ IF L<J THEN SORT(L,J);
+ IF I<R THEN SORT(I,R)
+ END (* SORT *);