-
-
Save parzibyte/742870ff808318f29c486154598455fa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
2 maneras de invertir un arreglo en Java | |
El primer método invierte un arreglo con un método manual, | |
intercambiando los elementos dentro de un ciclo for | |
El segundo utiliza un método incluido dentro de Collections | |
@author parzibyte | |
Visita: parzibyte.me/blog | |
*/ | |
import java.util.*;// Para Collections y Arrays | |
class Main { | |
public static void main(String[] args) { | |
// Definir el arreglo original | |
String[] lenguajes = { "Java", "JavaScript", "Go", "Kotlin", "C#", "Python", "PHP" }; | |
// Imprimir el arreglo antes de invertirlo | |
System.out.println("\n\n\n=====\nImprimiendo arreglo normal:\n====="); | |
for (String lenguaje : lenguajes) { | |
System.out.println(lenguaje); | |
} | |
// Invertir el arreglo con método manual | |
invertirManual(lenguajes); | |
System.out.println("\n\n\n=====\nImprimiendo arreglo invertido\n====="); | |
for (String lenguaje : lenguajes) { | |
System.out.println(lenguaje); | |
} | |
// Invertir el arreglo con métodos de Collections | |
// Nota: Collections.reverse invierte una lista, por eso convertimos el arreglo a lista | |
Collections.reverse(Arrays.asList(lenguajes)); | |
System.out.println("\n\n\n=====\nImprimiendo arreglo invertido (debería ser igual al original)\n====="); | |
for (String lenguaje : lenguajes) { | |
System.out.println(lenguaje); | |
} | |
} | |
public static void invertirManual(String[] arreglo) { | |
String temporal; // El elemento temporal del arreglo que vamos a intercambiar | |
int longitudDeArreglo = arreglo.length; | |
// Nota: al dividir entre 2, si es flotante, se pasa al entero anterior. P. ej. | |
// 5 / 2 = 2 | |
for (int x = 0; x < longitudDeArreglo / 2; x++) { | |
// Guardar el actual | |
temporal = arreglo[x]; | |
// El índice de la otra mitad | |
int indiceContrario = longitudDeArreglo - x - 1; | |
// El valor actual es el valor contrario, el de la otra mitad | |
arreglo[x] = arreglo[indiceContrario]; | |
// Y el de la otra mitad, es el que había en el actual originalmente | |
arreglo[indiceContrario] = temporal; | |
} | |
// El arreglo ya está invertido internamente | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment