作者raha0811 (我要当坏人)
看板Fortran
标题Re: [问题] 矩阵内的排序
时间Tue Mar 1 13:59:02 2011
※ 引述《raha0811 (我要当坏人)》之铭言:
: IDOU(I,J)
: ┌ ┐
: 1 1 0 2 0 0 0
: 2 3 4 5 0 0 0
: 3 6 7 8 0 0 0
: 4 9 10 11 0 0 0
: 5 12 13 15 14 18 0
: 6 16 0 17 0 0 0
: 7 0 0 19 0 0 0
: └ ┘
延续之前的,不好意思小弟又来打扰了,底下这是我的改的排序副程式,
可以对一排数列排序并把0的位置不动作排序
请问我该如何CALL底下的副程式来对上面的矩阵做每一列的排序呢?
CALL SELECTION(IDOU,J)
我这样打,他是都没改变就是
─────────────────────────────────────
│ 排序副程式 │
─────────────────────────────────────
!******************************************************************************
SUBROUTINE SELECTION(A,N)
IMPLICIT NONE
INTEGER :: N,A(N)
INTEGER I,J !回圈计数器
INTEGER MIN !找出每一轮中的最小值
INTEGER TEMP !交换资料时使用
DO I=1,N
MIN=A(I) !暂时令A(I)是最小值
DO J=I+1,N
IF (A(J) == 0) CYCLE !假如下一点是0,就跳过
IF (MIN > A(J)) THEN !发现A(I)不是最小值
TEMP=A(J) !把A(I)、A(J)交换
A(J)=A(I)
A(I)=TEMP
MIN=A(I)
END IF
END DO
END DO
RETURN
END
!*****************************************************************************
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.146.169
※ 编辑: raha0811 来自: 140.121.146.169 (03/01 14:00)
1F:推 terryys:selection是对一个1d array排序,所以你要对每一列都呼叫 03/01 15:07
2F:→ terryys:selection 03/01 15:08
3F:→ terryys:例如 do i=1,7;call selection(idou(i,:),6);enddo 03/01 15:09
4F:→ MHG:一次取一行或列出来sort. 03/03 16:19