es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ordenar elementos usando el método de inserción

Si estoy utilizando el algoritmo de ordenamiento por inserción como se muestra a continuación y tengo un arreglo con algunos elementos que son enteros y luego algunos que son nulos – ¿Cómo puedo ordenar ese arreglo con los elementos nulos al final usando el algoritmo de ordenamiento por inserción?

Por ejemplo: [1, 2, 6, null, 9, 5, 4, null, 2, 3]
Resultado: [1, 2, 2, 3, 4, 5, 6, 9, null, null]

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para ordenar un array con elementos nulos al final utilizando el algoritmo de ordenamiento por inserción, puedes modificar la lógica de comparación dentro del algoritmo. En lugar del operador de comparación estándar, debes implementar una lógica de comparación personalizada que considere a los elementos nulos como mayores que cualquier valor entero. Esto garantizará que los valores nulos se muevan al final del array durante el proceso de ordenamiento.

    Aquí tienes un ejemplo de implementación en Java:

    public static void insertionSortWithNulls(Integer[] arr) {
        for (int i = 1; i < arr.length; i++) {
            Integer key = arr[i];
            int j = i - 1;
            while (j >= 0 && compareToNull(arr[j], key) > 0) {
                arr[j + 1] = arr[j];
                j = j - 1;
            }
            arr[j + 1] = key;
        }
    }
    
    public static int compareToNull(Integer a, Integer b) {
        if (a == null && b == null) {
            return 0;
        } else if (a == null) {
            return 1;
        } else if (b == null) {
            return -1;
        } else {
            return a.compareTo(b);
        }
    }
    

    En esta implementación, definimos un método personalizado compareToNull que devuelve 0 si ambos elementos son nulos, 1 si el primer elemento es nulo, -1 si el segundo elemento es nulo, y de lo contrario delega en el método compareTo estándar para comparar dos enteros.

    Utilizamos esta lógica de comparación personalizada dentro del método insertionSortWithNulls para asegurarnos de que los valores nulos se muevan al final del array durante el proceso de ordenamiento.

Comments are closed.