爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4341|回复: 2

[求助] 怎么找到数组中最大的两个数呢

[复制链接]

新浪微博达人勋

发表于 2017-3-17 09:29:14 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
如题,最大的一个很容易找到,maxval()和maxloc()分别能找到值和index
最大的两个就不知道有什么好办法找到了,如下面的例子:
  1. !main.f90
  2. program main
  3.     implicit none
  4.     real, dimension(1:6) :: a = (/ 21.0, 12.0,33.0, 24.0, 33.0, 16.0 /)
  5.     Print *, maxloc(a),maxval(a)
  6.     stop
  7. end program
复制代码

结果可以得到: 3,33
怎么能找到第二个最大的: 5,33 呢?

要假设不清楚数组数值的情况下,也就是说最大值可能只有一个,也可能有多个相同的值


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-3-17 09:36:25 | 显示全部楼层
第一次找到最大的之后,把原数组中的最大值换成一个特别小的数,然后再用一次上面的函数,不就可以找到次大的了吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-3-17 12:50:20 | 显示全部楼层
本帖最后由 lon91ong 于 2017-3-17 12:51 编辑
小傅之追梦 发表于 2017-3-17 09:36
第一次找到最大的之后,把原数组中的最大值换成一个特别小的数,然后再用一次上面的函数,不就可以找到次大 ...

想要不改动数组的值的方法不是有个“掩码(mask)”参数吗,感觉应该可以利用起来
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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