查找最接近最大值的20%数组条目

时间:2015-03-13 14:01:18

标签: arrays fortran

我正在尝试找到最接近最大值的条目的20%。考虑一下这个程序

program max_find
    implicit none
    double precision, dimension(10) :: array
    array = [4.0, 7.0, 6.0, 9.0, 3.0, 2.0, 10.0, 5.0, 1.0, 8.0]
    print *, array == maxval(array)
end program

打印F F F F F F T F F F。现在我想找到逻辑数组F F F T F F T F F F(10个条目中的2个为真)。我可以将它包装在一个循环中,计算array > threshold中的条目数并降低阈值,直到我得到ratio*size(array) < count(array > threshold)ratio = 0.2),但如何合理地选择阈值?有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

调用子程序对数组进行排序(要在公共域中执行Fortran代码),并使用排序数组来选择阈值。您不需要对整个数组进行排序,并且在完全排序时间过长的情况下,您可以使用公共域ORDERPACK 2.0库中的部分排名子例程。