如何在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

回到顶部