Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Last active May 1, 2019 23:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/742870ff808318f29c486154598455fa to your computer and use it in GitHub Desktop.
Save parzibyte/742870ff808318f29c486154598455fa to your computer and use it in GitHub Desktop.
/*
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