mee*_*mee 1 arrays sorting fortran
我需要按升序/降序对矩阵的行进行排序.在matlab中,我可以很容易地做到如下:
A=[3 1 0;2 1 9;0 4 8]
sortrows(A,1)
Run Code Online (Sandbox Code Playgroud)
所以它会对列"1"中的行进行排序,其他列将相应地跟随.但我需要在FORTRAN中这样做.而且我对FORTRAN不太熟悉.谁能告诉我如何在FORTRAN中做到这一点.谢谢.
尽管Fortran没有排序内在函数,但如果使用minloc函数查找第一列中的最小元素并使用当前迭代的方式交换相应的行,代码可能会变得更简单,例如:
program main
implicit none
integer :: A(3,3), buf(3)
integer :: nsize, irow, krow
nsize = 3
A( 1, : ) = [ 3, 1, 0 ]
A( 2, : ) = [ 2, 1, 9 ]
A( 3, : ) = [ 0, 4, 8 ]
do irow = 1, nsize
krow = minloc( A( irow:nsize, 1 ), dim=1 ) + irow - 1
buf( : ) = A( irow, : )
A( irow, : ) = A( krow, : )
A( krow, : ) = buf( : )
enddo
end
Run Code Online (Sandbox Code Playgroud)
这使
A( 1, : ) = 0 4 8
A( 2, : ) = 2 1 9
A( 3, : ) = 3 1 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7809 次 |
| 最近记录: |