java - 查找数组中第二小的整数

标签 java arrays

我们需要在我们的作业中递归地找到一个数组中第二小的整数。然而,为了更多地理解这个主题,我想先迭代地(在这个网站的帮助下)然后自己递归地做。

不幸的是,迭代地做它是相当困惑的。我知道解决方案很简单,但我无法理解它。

下面是我的代码,到目前为止:

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/

相关文章:

javascript - 如何在数组对象中用空字符串替换未定义的值?

PHP - 为什么数组中两个项目的值都会发生变化?

php - 有没有办法将 "encode"PHP 数组转换成 PHP 代码?

java - Ehcache 2 maven 依赖

java - Tomcat 失败并出现 UnrecoverableKeyException : Cannot recover key

java - 如何在同一个模拟类中 stub 所有方法

javascript - 在 JavaScript 中使用数组作为名称对输入元素的值进行计数

java - 对字符进行排序

java - 使用java从时间戳(长整数)转换为日期格式

c# - 将多波段 16 位 tiff 图像转换为 8 位 tiff 图像