Mam tablicę o rozmiarze 1000. Jak mogę znaleźć indeksy (indeksy) pięciu maksymalnych elementów?Pobierz indeksy n maks. W tablicy java
Przykładem z kodem konfiguracji i moje próby są wyświetlane poniżej:
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]);
}
wiem, że problemem jest to, że jest on stale przypisywania najwyższą wartość maksymalną dla wszystkich maksymalnych elementów. Nie jestem pewien, jak temu zaradzić, ponieważ muszę zachować wartości i indeksy myArray
.
Nie sądzę, że sortowanie jest opcją, ponieważ muszę zachować indeksy. Rzeczywiście, potrzebuję konkretnie indeksów.
Wygląda na to trzeba rozważyć, jak zaktualizować gdy znajdziesz nowy element w górnej 5. –
Istnieje kilka metod zachowania indeksów w [tej dyskusji] (http://stackoverflow.com/questions/951848/java-array-sort-quick-way-to-geta-a- posortowane-listy-indeksów-tablic? rq = 1) –
(Aby było jasne, twoje podejście jest już bardzo zbliżone do prawej strony, wystarczy przerobić tę trzecią pętlę.) –