В нашем задании требуется найти второе наименьшее целое число в одном массиве рекурсивно. Однако, чтобы лучше понять предмет, я хочу сделать это итеративно сначала (с помощью этого сайта) и рекурсивно самостоятельно.Поиск второго наименьшего целого числа в массиве
К сожалению, делать это итеративно довольно сложно. Я понимаю, что решение прост, но я не могу обернуть его вокруг.
Ниже мой код, до сих пор:
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.
Запрещается перестраивать перегородки.
Вы не должны инициализировать 'smallest' с' 0', если массив может содержать только числа, большие чем это. Попробуйте 'int smallest = Integer.MAX_VALUE' для начала. То же самое касается 'secondSmallest'. – Axel
В качестве альтернативы, 'elements [0]' является подходящей инициализацией для 'smallest' и' secondSmallest', так как это кандидат для наименьшего в массиве. –