Мне нужно найти 1-й, 2-й и 3-й по величине массив. Я знаю, что могу просто отсортировать его и вернуть массив [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. Пожалуйста, предложите мне, что не так с этим решением. Спасибо.