C  THIS SUBROUTINE ASSUMES THE DATA ARRAY IS ORDERED FROM ELEMENT 1 THRU
C   THE VALUE OF 'IU' SUPPLIED IN THE CALL. THEN SETTING IL IU, ALL DATA
C   LESS THAN OR EQUAL TO 'CUT' ARE PLACED IN POSITIONS IL+1 TO
C   A NEW VALUE OF IU COMPUTED DURING THE PARTITION. AT THIS POINT
C   ALL VALUES OF A(I) FOR I GREATER THAN IU SATISFY A(I) GREATER
C   THAN CUT.
C
      SUBROUTINE PART (A,N,CUT,IL,IU)
      DIMENSION A(N)
      IL=IU+1
      DO 10 I=IL,N
      IF (A(I).GT.CUT) GO TO 10
      IU=IU+1
      IF (I.EQ.IU) GO TO 10
      Q=A(IU)
      A(IU)=A(I)
      A(I)=Q
   10 CONTINUE
      IF (IL.GT.IU) IL=IU
      RETURN
      END
