你的意思是不是用数组ns保存排序的序号,我大概修改了一下
[Fortran] 纯文本查看 复制代码
! nline=116
DO i = 1, nline-1
write(*,'(2i4)')i;
ins=ns(1,i); ! 数组排序序号,原始序号在ns(2,i)中
DO j = i+1, nline
jns=ns(1,j); ! 序号
IF ((ap(jns,1) < ap(ins,1)) .OR. &
((abs(ap(jns,1)-ap(ins,1))<1.0e-6) .AND. (ap(jns,2) < ap(ins,2))) .OR. &
((abs(ap(jns,1)-ap(ins,1))<1.0e-6) .AND. (abs(ap(jns,2)-ap(ins,2))<1.0e-6) .AND. (ap(jns,3) < ap(ins,3))) & ! TODO: 原来是<
) THEN
write(*,*)'swap ',i,j
ns(1,i) = jns
ns(1,j)=ins
ins=jns
cycle;
END IF
END DO
END DO
OPEN (UNIT=4, FILE='resu.txt')
DO i = 1, nline
WRITE (UNIT=4, FMT='(2i6,2x,10(f12.4,2x))') ns(1:2,i), ap(ns(1,i),1:3)
END DO
|