¿Algún curso o tutorial deOrdenamiento Externo, Mezcla Natural con archivos Java?

Tengo 2 ejercicios en "estructura de datos" donde me piden ordenar una serie de número (array) con n elementos, 1 de forma ascendente y 2 de forma descendente; seré sincero y la verdad es que no sé cómo hacerlo, es una tarea importante, me sé la teoría de mezcla natural pero solo teoría, no sé cómo implementarlo, la parte más difícil para mi es ¿Cómo pasar los números de un archivo de texto a un array?. Sé como leer un archivo y pasar esos datos al programa pero no entiendo bien lo de pasarlo a un array. Soy nuevo y quiero aprender.

Respuesta
1

No termino de comprender bien tu pregunta, pero por el contexto voy a deducir que lo que estás preguntando es lo siguiente:

¿Cómo hago un programa en java que guarde números de un archivo de texto separados por líneas en un array, los ordene con mezcla natural y los muestre por pantalla?

Como dices que quieres aprender, no que te lo sirvan acabado, te paso solo el primer código que necesitarás:

public static int[] leerArchivo(String nombre){ 
        String predata;
        int[] findata = null;
            try { 
                predata = new String(Files.readAllBytes(Paths.get(nombre)));
                String[] data = predata.split("\n");
                findata = new int[data.length];
                for (int i = 0; i < data.length; i++) {
                    data[i] = data[i].replaceAll(""+(char)(byte)13, "");
                    System.out.println("paso "+i+" "+(byte)data[i].charAt(0));
                    //findata[i] = intParse(data[i]);
                    findata[i] = parseInt(data[i]);
                }
            } catch (IOException ex) {
                Logger.getLogger(ReadTextAsString.class.getName()).log(Level.SEVERE, null, ex);
            }
        return findata; 
    }

Con esta función guardaremos los numeros del archivo en una array. ¿Cómo? Pues primero obtenemos todo el archivo y lo guardamos en una string, para guardarlo en una array separado por líneas. Lo de eliminar el Byte "13" es porque a veces se me cuela y da error. Entonces una vez tengo todos los valores en string los paso a número y ya.

Otra alternativa que tienes es leerlo línea por línea y guardarlo en una cola dinámica para luego guardar la cola dinámica en una array, pero me pareció tal vez demasiado complejo, sobretodo si no tocaste el tema de colas dinamicas anteriormente.

Una vez tengas el array ya puedes hacer la mezcla natural como te han enseñado, para el descendente es exactamente lo mismo, solo que cuando haces la comparación de "mayor que" lo cambias por un "menor que" (o si tienes los valores al revés pues lo opuesto).

A partir de aqui creo que ya tienes lo necesario para seguir, si tienes cualquier duda durante el proceso avisame por aquí mismo y te respondo ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas