我有一个大小为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) –
(清楚的是,你的方法已经非常接近正确;你只需要重新做第三个循环。) –