我们需要在我们的作业中递归地找到一个数组中第二小的整数。然而,为了更多地理解这个主题,我想先迭代地(在这个网站的帮助下)然后自己递归地做。
不幸的是,迭代地做它是相当困惑的。我知道解决方案很简单,但我无法理解它。
下面是我的代码,到目前为止:
public static void main(String[] args)
{
int[] elements = {0 , 2 , 10 , 3, -3 };
int smallest = 0;
int secondSmallest = 0;
for (int i = 0; i < elements.length; i++)
{
for (int j = 0; j < elements.length; j++)
{
if (elements[i] < smallest)
{
smallest = elements[i];
if (elements[j] < secondSmallest)
{
secondSmallest = elements[j];
}
}
}
}
System.out.println("The smallest element is: " + smallest + "\n"+ "The second smallest element is: " + secondSmallest);
}
这适用于一些数字,但不是全部。数字会发生变化,因为内部 if 条件不如外部 if 条件有效。
数组重排是被禁止的。
最佳答案
试试这个。第二个条件用于在最小数字为第一个时捕获事件
int[] elements = {-5, -4, 0, 2, 10, 3, -3};
int smallest = Integer.MAX_VALUE;
int secondSmallest = Integer.MAX_VALUE;
for (int i = 0; i < elements.length; i++) {
if(elements[i]==smallest){
secondSmallest=smallest;
} else if (elements[i] < smallest) {
secondSmallest = smallest;
smallest = elements[i];
} else if (elements[i] < secondSmallest) {
secondSmallest = elements[i];
}
}
@Axel 的UPD
int[] elements = {-5, -4, 0, 2, 10, 3, -3};
int smallest = Integer.MAX_VALUE;
int secondSmallest = Integer.MAX_VALUE;
for (int i = 0; i < elements.length; i++) {
if (elements[i] < smallest) {
secondSmallest = smallest;
smallest = elements[i];
} else if (elements[i] < secondSmallest) {
secondSmallest = elements[i];
}
}
关于java - 查找数组中第二小的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30427857/