jueves, 12 de enero de 2017

Arrays: Averigua el orden de un array

Construye una función que reciba un array de números enteros y devuelva un valor entero con tres posibilidades:
  • 1 si está ordenado en orden creciente
  • -1 si está ordenado en orden decrecente
  • 0 si no tiene orden
Desde la función principal le pasarás un array con 5 números enteros (los pones tú a mano) y desde dicha función se imprimirán los siguiente resultados según corresponda:

El array [aquí se imprime al contenido del array] está ordenado de forma creciente.
El array [aquí se imprime al contenido del array] está ordenado de forma decreciente.
El array [aquí se imprime al contenido del array] no tiene orden.


Ejemplo:
El array [50, 40, 31, 8, 1] está ordenado de forma decreciente
El array [50, 54, 57, 80, 110] está ordenado de forma decreciente
El array [34,14,345,1,23,3] no tiene orden


SOLUCIÓN EN JAVA:
package ordenarrays;

public class OrdenArrays {

    //Esta función averigua el orden del array que se le pasa como parámetro
    //  1 Si está ordenado de forma creciente
    // -1 Si está ordenado de forma decreciente
    //  0 Si no está ordenado
    static int averiguaOrden(int array[]) {
        int paresOrdenadosAscendente = 0, paresOrdenadosDescendente = 0, resultado;

        //Recorro todo el array y cuento los pares que hay ordenados de forma creciente
        //y también cuento los que hay ordenados de forma decreciente
        for (int i = 0; i < array.length - 1; i++) {
            if (array[i] > array[i + 1]) {
                paresOrdenadosAscendente++;
            }
            if (array[i] < array[i + 1]) {
                paresOrdenadosDescendente++;
            }
        }
        if (paresOrdenadosAscendente == array.length - 1) {
            //Si los pares ordenados de forma creciente es igual al total de pares
            //es porque está ordenado de forma creciente todo el array
            resultado = 1;
        } else if (paresOrdenadosDescendente == array.length - 1) {
            //Si los pares ordenados de forma decreciente es igual al total de pares
            //es porque está ordenado de forma decreciente todo el array
            resultado = -1;
        } else {
            //En caso contrario, es porque no hay orden
            resultado = 0;
        }

        return resultado;
    }

    public static void main(String[] args) {
        //Creo un array con valores arbitrarios
        int array[] = {50, 40, 31, 8, 1};
        int orden;

        //Hago una llamada a la función para averiguar el orden del array
        orden = averiguaOrden(array);
        //Dependiendo del valor que devuelva la llamada a la función tendré
        //que imprimir el orden correspondiente
        switch (orden) {
            case 0:
                System.out.print("El array "+Arrays.toString(array)+" no tiene orden");
                break;
            case 1:
                System.out.print("El array "+Arrays.toString(array)+" está ordenado de forma decreciente");
                break;
            case -1:
                System.out.print("El array "+Arrays.toString(array)+" está ordenado de forma decreciente");
                break;
        }
    }
}

No hay comentarios:

Publicar un comentario