/**
    Classe della Prova di Esame di Programmazione I e Laboratorio
    del 7 aprile 2003
*/

public class ProvaArrayAprile {

    /**
    deve prendere come parametro un array di elementi di tipo 
    intero e lo modifica scambiando di posizione l'elemento 
    di valore piu' grande con l'elemento di valore piu' piccolo
    presente nell'array
    @param a primo array di elementi di tipo intero 
    @return void
    */
    public static void scambiaMinMax(int[] a) {
        if ((a == null) || (a.length == 0))
            return;
        int posMin = 0;
        int posMax = 0;
        int i = 0;
        while (i < a.length) {  // e` possibile usare anche il "for" in alternativa
            if (a[i] > a[posMax])
                posMax = i;
            if (a[i] < a[posMin])
                posMin = i;
            i++;
        }
        int temp = a[posMax];
        a[posMax] = a[posMin];
        a[posMin] = temp;
    }

    /**
    Stampa un array di interi. Se l'array e` null lo segnala.
    @param a l'array di interi
    */
    public static void printArray(int[] a) {
        if (a == null)
            System.out.println("L'array e` uguale a null!");
        else if (a.length == 0)
            System.out.println("[]");
        else
            for (int i = 0; i < a.length; i++)
                System.out.println("Elemento " + i + ": " + a[i]);
    }

    /**
        Risultato atteso dal main:

        Elemento 0: 2
        Elemento 1: 1
        Elemento 2: 6
        Elemento 3: 3
        Elemento 4: 7
        Elemento 5: 4
        Elemento 0: 2
        Elemento 1: 7
        Elemento 2: 6
        Elemento 3: 3
        Elemento 4: 1
        Elemento 5: 4
        []
        L'array e` uguale a null!
    */
    public static void main(String[] args) {
        int[] a = {2, 1, 6, 3, 7, 4};
        printArray(a);
        scambiaMinMax(a);
        printArray(a);
        scambiaMinMax(a = new int[] {});
        printArray(a);
        scambiaMinMax(a = null);
        printArray(a);
    }

}