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 ;)