我必须找到第一个、第二个和第三个最大的数组。我知道我可以简单地对其进行排序并返回数组 [0]、数组 [1]、数组 [3]。但问题是,我需要索引,而不是值。例如,如果我有float[] listx={8.0, 3.0, 4.0, 5.0, 9.0}
它应该返回 4、0 和 3。
这是我的代码,但它不起作用:
//declaration max1-3
public void maxar (float[] listx){
float maxel1=0;
float maxel2=0;
float maxel3=0;
for (int i=0; i<listx.length; i++){
if(maxel1<listx[i])
{maxel1=listx[i];
max1=i;
}
}
listx[max1]=0; //to exclude this one in nextsearch
for (int j=0; j<listx.length; j++){
if(listx[j]>maxel2)
{maxel2=listx[j];
max2=j;
}
}
listx[max2]=0;
for (int k=0; k<listx.length; k++){
if(listx[k]>maxel3)
{maxel3=listx[k];
max3=k;
}
}
}
我得到 max1 正确,但之后所有元素都变为 0。因此 max2 和 max3 变为 0。请告诉我这个解决方案有什么问题。谢谢你。