java - 一次查找数组 12 个元素的最大值

标签 java arrays sorting max

我有一个包含大约 1000 个条目的数组,这些条目每年分为 12 个条目,我试图找到每年的最大值,为此我需要一次读取 12 个值并找到这 12 个值中的最大值,然后继续处理数组中的下 12 个值,依此类推,直到完成。

为了做到这一点,我创建了一个临时数组来存储 12 个值,以及包含每年最高分数的最终数组。下面的代码不起作用,我不确定为什么,我花了很长时间研究并尝试使用不同的解决方案,任何帮助将不胜感激:)

//double rain[]= new double [1268];  this is the array declared earlier with data in

double maxRAINyear[]= new double [1200];
double temp [] = new double [12];
int arrayCounter = 0;
int count = 0;
for (int c = 36; c < rain.length; c++) {
   temp[count] = rain[c];
   if (count == 12){
       Arrays.sort(temp);
       double max = temp[temp.length - 1];
       maxRAINyear[arrayCounter] = max;
       arrayCounter++;
       count = 0;
   }
   count++;

}

最佳答案

如果不知道代码会产生什么结果,就很难看出代码出了什么问题,但无论如何,这都不是一个好方法。

我假设您仅限于一个长数组的输入格式,尽管多维数组可能更有意义,具体取决于它的其他用途。

// double rain[] = new double[1268]; // input
double maxRAINyear[] = new double[(rain.length+11) / 12];
double max = Double.NEGATIVE_INFINITY;
for (int i = 0; i < rain.length; i++)
{
    if (rain[i] > max) max = rain[i];
    if (i % 12 == 0)
    {
        maxRAINyear[i / 12] = max;
        max = Double.NEGATIVE_INFINITY;
    }
}
if (rain.length % 12 != 0) maxRAINyear[maxRAINyear.length-1] = max;

这会计算每 12 个数字的最大值,而不是单独存储它们并对其进行排序。我假设存储了整整几年的时间。如果您想在年底考虑部分年份,则需要对此进行修改。

关于java - 一次查找数组 12 个元素的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43915432/

相关文章:

java - 如何从代码启动java小程序?

java - Java 中的 Integer 缓存如何/为什么更快?

java - Android Java - OnCreate 中的竞争条件,带有两个观察者并制作列表

c# - 在 C# 中为特定范围设置数组值

java - 从另一个 Activity 返回时 ArrayList 为 null

ruby-on-rails - 覆盖 Ruby 的飞船操作符 <=>

Java 8 对对象列表进行排序

iphone - 从 NSDictionary 按排序顺序显示 JSON 字符串

java - Thymeleaf#strings.replace 为正则表达式和 :fragment

java - 如何让我的数组打印输入的重复一次? (JAVA)