如何在Java中查找数组中的第二大数字?
我只是在练习一些MIT
Java作业。但是,我不确定如何找到第二大数字。http://ocw.csail.mit.edu/f/13
public class Marathon { public static void main(String[] arguments) {
String[] names = { "Elena", "Thomas", "Hamilton", "Suzie", "Phil",
"Matt", "Alex", "Emma", "John", "James", "Jane", "Emily",
"Daniel", "Neda", "Aaron", "Kate" };
int[] times = { 341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412,
393, 299, 343, 317, 265 };
for (int i = 0; i < names.length; i++) {
System.out.println(names[i] + ": " + times[i]);
}
System.out.println();
System.out.println("Largest Timing " + Largest(times));
System.out.println();
}
public static int Largest(int[] times) {
int maxValue = times[0];
for (int i = 1; i < times.length; i++) {
if (times[i] > maxValue) {
maxValue = times[i];
}
}
return maxValue;
}
}
回答:
仅对数组进行排序以查找订单统计信息太浪费了。您可以通过遵循与现有算法相似的算法找到第二大元素,并使用一个代表第二大数字的附加变量。
当前,下一个元素可以大于最大值或等于/小于最大值,因此单个元素就if
足够了:
if (times[i] > maxValue) { maxValue = times[i];
}
考虑两个变量,下一个元素可能是
- -最大值变为第二大,而下一个元素变为最大值
- 元素-下一个元素将成为第二大元素。
必须特别注意初始状态。查看前两项,然后将较大的项分配给max
,将较小的项分配给第二大;如果有一个元素,则从第三个元素开始循环。
这是您如何编码它:
if (times[i] > maxValue) { secondLargest = maxValue;
maxValue = times[i];
} else if (times[i] > secondLargest) {
secondLargest = times[i];
}
以上是 如何在Java中查找数组中的第二大数字? 的全部内容, 来源链接: utcz.com/qa/423656.html