【发布时间】:2013-07-11 12:01:35
【问题描述】:
我有一个大小为 1000 的数组。如何找到五个最大元素的索引(索引)?
下面显示了一个带有设置代码的示例和我的尝试:
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 的值和索引。
我不认为排序是一种选择,因为我需要保留索引。事实上,正是我特别需要的索引。
【问题讨论】:
-
当你在top 5中找到新元素时,看起来你需要重新考虑如何更新。
-
this discussion中有一些保留索引的方法
-
(要清楚,你的方法已经非常接近正确了;你只需要重新设计第三个循环。)
-
你可以使用数组列表吗?这可能会导致更简单的算法
-
首先获取 first 最大值的索引。
标签: java arrays sorting loops max