以下@ Yossarian的建議我扔掉了我的舊回答,並提供這個大大改進的版本。儘管如此,大部分信貸歸功於Yossarian。現在
PROGRAM sort
USE, INTRINSIC :: iso_fortran_env
INTEGER, PARAMETER :: ne = 50
INTEGER, PARAMETER :: tops = 10
REAL(real64), DIMENSION(ne,ne,ne) :: data_array
LOGICAL, DIMENSION(ne,ne,ne) :: mask_array
INTEGER, DIMENSION(tops,SIZE(SHAPE(data_array))) :: top_array
INTEGER :: ix
CALL RANDOM_SEED(put=[1])
CALL RANDOM_NUMBER(data_array)
mask_array = .TRUE.
DO ix = 1, tops
top_array(ix,:) = MAXLOC(data_array,mask=mask_array)
mask_array(top_array(ix,1),top_array(ix,2),top_array(ix,3)) = .FALSE.
END DO
END PROGRAM sort
,在程序top_array
的末尾包含的data_array
最大tops
元素的索引。
我仍然懷疑這是一個有效的作爲一個精心編寫的排序例程,但我已經在數組上測試了它,並且它在合理的時間內運行。
尚未。讓我讀一下它。 「編輯:」但即使是這樣,它看起來不是很瑣碎:( – jhaprade