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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el resultado deseado, podemos utilizar una variación del algoritmo de ordenamiento por inserción donde ordenamos el arreglo basándonos en los valores de la primera columna mientras seguimos la pista de la posición inicial de cada fila en el arreglo bidimensional de entrada. A continuación se muestra un código de muestra en Java que implementa este enfoque:

    int[][] intervals = {
        {3,4},
        {2,3},
        {1,2},
    };
    
    // creando un arreglo para almacenar las posiciones iniciales de las filas
    int[] initialPositions = new int[intervals.length];
    for (int i = 0; i < intervals.length; i++) {
        initialPositions[i] = i;
    }
    
    // ordenamiento por inserción basado en los valores de la primera columna
    for (int i = 1; i < intervals.length; i++) {
        int[] current = intervals[i];
        int position = initialPositions[i];
        int j = i - 1;
        while (j >= 0 && intervals[j][0] > current[0]) {
            intervals[j + 1] = intervals[j];
            initialPositions[j + 1] = initialPositions[j];
            j--;
        }
        intervals[j + 1] = current;
        initialPositions[j + 1] = position;
    }
    
    // se imprime el arreglo ordenado con las posiciones iniciales de las filas
    for (int i = 0; i < intervals.length; i++) {
        System.out.println(intervals[i][0] + "," + intervals[i][1] + "," + initialPositions[i]);
    }
    

    La salida del código anterior será:

    1,2,2
    2,3,1
    3,4,0
    

    Aquí, la tercera columna representa la posición inicial de la fila en el arreglo bidimensional de entrada. Por ejemplo, la fila {2,3} era la segunda fila en el arreglo de entrada y su posición ordenada también es la segunda, por lo tanto el valor 1 en la tercera columna.

Comments are closed.