Trouver le deuxième plus petit entier dans la gamme

Nous sont nécessaires dans notre mission pour trouver le deuxième plus petit entier dans un tableau de manière récursive. Cependant, pour des raisons de compréhension du sujet en plus, je veux le faire de manière itérative en premier (avec l'aide de ce site web) et de manière récursive sur mon propre.

Malheureusement, le faire de manière itérative est assez déroutant. Je comprends que la solution est simple, mais je ne peut pas envelopper la tête autour de lui.

Ci-dessous mon code pour l'instant:

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);
}

Cela fonctionne pour quelques numéros, mais pas tous. Les numéros de changement, parce que l'intérieur si la condition n'est pas aussi efficace que l'externe si la condition.

Tableau des réarrangements sont interdits.

Vous ne devriez pas initialiser smallest avec 0 si le tableau ne peut contenir que des nombres plus grands que. Essayez int smallest = Integer.MAX_VALUE pour commencer. En va de même pour secondSmallest.
Sinon, elements[0] est une bonne initialisation pour smallest et secondSmallest, puisque c'est un candidat pour le plus petit dans le tableau.

OriginalL'auteur Majd Khoury | 2015-05-24