爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: aa22556688

[求助] fortran二位数组排序求助!!!

[复制链接]
 成长值: 0
发表于 2013-5-4 17:09:51 | 显示全部楼层
额,说实话我其实也没看懂你的问题,不过前几天正好写过一个一维数组的排序程序,贴给你:

subroutine rank(x,m)
!        此程序段用冒泡法对一维序列x中数由小到大排序
real x(m)
        do j=2,m
        do i=j,m
        if(x(i).lt.x(j-1))then
                exchange=x(j-1)
                x(j-1)=x(i)
                x(i)=exchange
        endif
        enddo
        enddo
end

很短,程序旨在实现一维数组的由小到大排序,至于什么二维的,我想是不是你的数据只不过存成了好几列而已,自己想办法read到一个数组里面就ok了···
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

发表于 2014-5-6 11:12:43 | 显示全部楼层
言深深 发表于 2013-5-4 17:09
额,说实话我其实也没看懂你的问题,不过前几天正好写过一个一维数组的排序程序,贴给你:

subroutine r ...

我做排序问题时没做出来,看了一下你的程序,才发现是我的思路出了问题。你的程序点拨了我的思路,然后将我的程序修改了一下就对了。太感谢了!
密码修改失败请联系微信:mofangbao
发表于 2014-5-7 10:38:50 | 显示全部楼层
楼主 我也是新手 看到你的贴自己编个 你帮我看看能处理你那个问题么 还有就是你有没有更简洁的办法呀?program main
implicit none
integer::a(2484,98)
integer::b(243432)
integer::k=0,i,j,temp
!开始读入二维数组数据
open(10,file='jiayuan.txt')
do i=1,2484
  read(10,*) a(i,1:98)
end do
close(10)
!把二维数组赋值给一位数组
do i=1,2484
do j=1,98
  k=k+1
  b(k)=a(i,j)
  end do
end do
!冒泡法排序
do i=1,243431
  do j=i+1,243432
    if(b(i)>b(j)) then
           temp=b(i)
           b(i)=b(j)
           b(j)=temp
        end if
  end do
end do
!输出处理后的数组,格式我选择的默认
write(*,*) b
end

密码修改失败请联系微信:mofangbao
发表于 2014-5-7 10:50:46 | 显示全部楼层
先转换为一维数组,然后排序,再存储为二维数组。
一维数组的排序方法很多,也很简单,找一下都有。
密码修改失败请联系微信:mofangbao
发表于 2017-1-24 08:55:56 | 显示全部楼层
言深深 发表于 2013-5-4 17:09
额,说实话我其实也没看懂你的问题,不过前几天正好写过一个一维数组的排序程序,贴给你:

subroutine r ...

非常感谢你的冒泡法程序
密码修改失败请联系微信:mofangbao
发表于 2017-5-11 08:20:04 | 显示全部楼层
言深深 发表于 2013-5-4 17:09
额,说实话我其实也没看懂你的问题,不过前几天正好写过一个一维数组的排序程序,贴给你:

subroutine r ...

非常感谢!很短的程序,顿悟了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表