📄 qcksrt.f
字号:
SUBROUTINE QCKSRT(N,ARR) PARAMETER (M=7,NSTACK=50,FM=7875.,FA=211.,FC=1663. * ,FMI=1.2698413E-4) DIMENSION ARR(N),ISTACK(NSTACK) JSTACK=0 L=1 IR=N FX=0.10 IF(IR-L.LT.M)THEN DO 13 J=L+1,IR A=ARR(J) DO 11 I=J-1,1,-1 IF(ARR(I).LE.A)GO TO 12 ARR(I+1)=ARR(I)11 CONTINUE I=012 ARR(I+1)=A13 CONTINUE IF(JSTACK.EQ.0)RETURN IR=ISTACK(JSTACK) L=ISTACK(JSTACK-1) JSTACK=JSTACK-2 ELSE I=L J=IR FX=MOD(FX*FA+FC,FM) IQ=L+(IR-L+1)*(FX*FMI) A=ARR(IQ) ARR(IQ)=ARR(L)20 CONTINUE21 IF(J.GT.0)THEN IF(A.LT.ARR(J))THEN J=J-1 GO TO 21 ENDIF ENDIF IF(J.LE.I)THEN ARR(I)=A GO TO 30 ENDIF ARR(I)=ARR(J) I=I+122 IF(I.LE.N)THEN IF(A.GT.ARR(I))THEN I=I+1 GO TO 22 ENDIF ENDIF IF(J.LE.I)THEN ARR(J)=A I=J GO TO 30 ENDIF ARR(J)=ARR(I) J=J-1 GO TO 2030 JSTACK=JSTACK+2 IF(JSTACK.GT.NSTACK)PAUSE 'NSTACK must be made larger.' IF(IR-I.GE.I-L)THEN ISTACK(JSTACK)=IR ISTACK(JSTACK-1)=I+1 IR=I-1 ELSE ISTACK(JSTACK)=I-1 ISTACK(JSTACK-1)=L L=I+1 ENDIF ENDIF GO TO 10 END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -