      PROGRAM  sort
************************************************************************
* sorts an x-ordered x-y file. From standard input it reads:           *
************************************************************************
      parameter(nphys=100000)
      integer xx(nphys),yy(nphys)
      INTEGER I,mm                             
      
      mm=100000 
      do 10 i=1,mm                                                  
       READ(*,*,END=11) xx(i),yy(i)
10    continue   
11    mm=i-1

******sort with respect to x-value
      call SORT2(mm,xx,yy)
      do 20 i=1,mm
      write(*,*) xx(i),yy(i)
20    continue
      end
      
      
       
      SUBROUTINE SORT2(N,RA,RB)
      DIMENSION RA(N),RB(N)
      L=N/2+1
      IR=N
10    CONTINUE
        IF(L.GT.1)THEN
          L=L-1
          RRA=RA(L)
          RRB=RB(L)
        ELSE
          RRA=RA(IR)
          RRB=RB(IR)
          RA(IR)=RA(1)
          RB(IR)=RB(1)
          IR=IR-1
          IF(IR.EQ.1)THEN
            RA(1)=RRA
            RB(1)=RRB
            RETURN
          ENDIF
        ENDIF
        I=L
        J=L+L
20      IF(J.LE.IR)THEN
          IF(J.LT.IR)THEN
            IF(RA(J).LT.RA(J+1))J=J+1
          ENDIF
          IF(RRA.LT.RA(J))THEN
            RA(I)=RA(J)
            RB(I)=RB(J)
            I=J
            J=J+J
          ELSE
            J=IR+1
          ENDIF
        GO TO 20
        ENDIF
        RA(I)=RRA
        RB(I)=RRB
      GO TO 10
      END


