我有一個大小爲1000的數組。我如何找到五個最大元素的索引(索引)?在java數組中獲取n個最大值的索引
與設置代碼和我嘗試的例子顯示如下:
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-quick-way-to-get-a-數組的索引排序?rq = 1) –
(清楚的是,你的方法已經非常接近正確;你只需要重新做第三個循環。) –