Re: [問題] 矩陣內的排序

看板Fortran作者 (我要當壞人)時間13年前 (2011/03/01 13:59), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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)

03/01 15:07, , 1F
selection是對一個1d array排序,所以你要對每一列都呼叫
03/01 15:07, 1F

03/01 15:08, , 2F
selection
03/01 15:08, 2F

03/01 15:09, , 3F
例如 do i=1,7;call selection(idou(i,:),6);enddo
03/01 15:09, 3F

03/03 16:19, , 4F
一次取一行或列出來sort.
03/03 16:19, 4F
文章代碼(AID): #1DR8ifIM (Fortran)
討論串 (同標題文章)
文章代碼(AID): #1DR8ifIM (Fortran)