サイズが1000の配列があります。5つの最大要素のインデックス(インデックス)はどのようにして見つけることができますか?Java配列の最大値のインデックスを取得する
セットアップコードと私の試みとの例を以下に表示されます。
Random rand = new Random();
int[] myArray = new int[1000];
int[] maxIndices = new int[5];
int[] maxValues = new int[5];
for (int i = 0; i < myArray.length; i++) {
myArray[i] = rand.nextInt();
}
for (int i = 0; i < 5; i++) {
maxIndices[i] = i;
maxValues[i] = myArray[i];
}
for (int i = 0; i < maxIndices.length; i++) {
for (int j = 0; j < myArray.length; j++) {
if (myArray[j] > maxValues[i]) {
maxIndices[i] = j;
maxValues[i] = myArray[j];
}
}
}
for (int i = 0; i < maxIndices.length; i++) {
System.out.println("Index: " + maxIndices[i]);
}
を私はこの問題は、それは常に、すべての最大の要素への最高の最大値を代入していることを知っています。 myArray
の値と指標を保存する必要があるため、これをどのように修正するかはわかりません。
私はインデックスを保持する必要があるので、並べ替えはオプションではないと思います。実際、それは私が特に必要とする指標です。
それはあなたが見つけたときに更新する方法を再検討する必要があるように見えます上位5の新しい要素です。 –
[このディスカッション]にはインデックスを保存するアプローチがいくつかあります(http://stackoverflow.com/questions/951848/java-array-sort-quickway-to-get-a-配列のソート済みリスト?rq = 1) –
(明らかに、あなたのアプローチはすでにかなり近かったので、その3番目のループを再作成する必要があります) –