package examenes.examen20241122;

import examenes.examen20241122.Utils.Utils;

public class Ejercicio_c {
    public static void main(String[] args) {
        int[] arrayNums = Utils.crearArrayNumsAleatorios(10, 0, 10);

        //System.out.println(calcularNumDivisores(4));
        Utils.mostrarArrayNums(arrayNums);
        System.out.println();
        Utils.mostrarArrayNums(ordenarBurbujaDivisores(arrayNums));
    }


    /**
     * Ordena por Burbuja según el número de divisores
     *
     * @param array Array que ordenar
     * @return Array ordenado
     */
    public static int[] ordenarBurbujaDivisores(int[] array) {
        boolean ordenando;
        do {
            ordenando = false;
            for (int i = 0; i < array.length; i++) {
                if (i != (array.length - 1) && calcularNumDivisores(array[i]) > calcularNumDivisores(array[i + 1])) {
                    int tempNum = array[i];
                    array[i] = array[i + 1];
                    array[i + 1] = tempNum;
                    ordenando = true;
                }
            }
        } while (ordenando);
        return array;
    }

    /**
     * Calcula el número de divisores que tiene un número
     *
     * @param num Número del que calcular los divisores
     * @return Número de divisores
     */
    public static int calcularNumDivisores(int num) {
        int divisores = 0;
        for (int i = 1; i <= num; i++) {
            if ((num % i) == 0) divisores++;
        }
        return divisores;
    }
}
