A todo el que ha estudiado programación le han enseñado como intercambiar dos variables del siguiente modo:
aux = x;
x = y;
y = aux;
Navegando por ahí he encontrado cosas muy interesantes sobre otros modos de hacer esto sin la necesidad de una tercera variable. Algo que, de entrada, a cualquier estudiante de programación básica, le parecería imposible.
No contento con una solución, os explicaré dos soluciones:
- En la primera utilizamos la aritmética básica. El código es el siguiente:
x = x + y;
y = x - y;
x = x - y;
Como vemos, no se hace uso de ninguna otra variable y consigue muy bien su cometido. La única desventaja que le veo a este método sería que para valores muy grandes de "x" y "y", al hacer la suma, se podría provocar un overflow en la variable "x" y todo se fastidiaría.
Por eso debemos tener en cuenta que este método se utilice sólo para valores en los que sepamos de antemano que esto no sucederá.
- En la segunda solución utilizamos el álgebra de bool:
Se trata de utilizar la operación binaria “XOR”. Aqui está el código:
a ^= b;
b ^= a;
a ^= b;
También lo podemos hacer en una línea:
a ^= b ^= a ^= b;
Este código es mágnifico. De nuevo, la única desventaja es que no es portable. Asi que cuidado ;)
1 comentario:
Hola pekeño!! Gracias x pasarte a ver al pinguinito Omarito jejeje. Tratalo bien eeeh? :P no me lo tires mas al agua que se resfria xDD. Xcierto...no entiendo una mierda eso de a ^= b..ni nada xDDD jejeje. El panda moooolaa cacho! :D
Publicar un comentario