www.pudn.com > Fortran.zip > LISHL.FOR, change:1994-06-09,size:377b


 
 
	SUBROUTINE LISHL(A,N,MM,NN) 
	INTEGER A(N),T 
	B=NN-MM+1 
	B=ALOG(B)/ALOG(2.0) 
	M=B 
	L=1 
	DO 10 I=1,M 
10	L=L*2 
	DO 50 I=1,M 
	  K=L-1 
	  L=L/2 
	  DO 40 J=K+MM,NN 
	    T=A(J) 
	    IS=J-K 
20	    IF((IS.GT.MM-1).AND.(A(IS).GT.T)) THEN 
	      A(IS+K)=A(IS) 
	      IS=IS-K 
	      GOTO 20 
	    END IF 
	    A(IS+K)=T 
40	  CONTINUE 
50	CONTINUE 
	RETURN 
	END