Ho una matrice di dimensione 1000. Come posso trovare gli indici (indici) dei cinque elementi massimi?Ottieni indici di n massimi in array java
Un esempio con il codice di setup e il mio tentativo vengono visualizzati sotto:
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]);
}
So che il problema è che è costantemente assegnando il più alto valore massimo a tutti gli elementi massimi. Non sono sicuro di come rimediare perché devo conservare i valori e gli indici di myArray
.
Non penso che lo smistamento sia un'opzione perché ho bisogno di preservare gli indici. In effetti, sono gli indici di cui ho bisogno in particolare.
Sembra che tu abbia bisogno di riconsiderare come aggiornare quando si trova un nuovo elemento nella parte superiore 5. –
ci sono alcuni approcci che preservano l'indice in [questa discussione] (http://stackoverflow.com/questions/951848/java-array-sort-quick-way-to-get-a- lista ordinata-di-indici-di-un-array? rq = 1) –
(Per essere chiari, il tuo approccio è già abbastanza vicino a destra, devi solo rielaborare quel terzo ciclo.) –