Evidentemente non ho niente di meglio da fare nel giorno di natale. :) Vediamo un po' a cosa serve questo algoritmo.
Se avete un po' di basi di programmazione sapreste che scambiare il valore contenuto in due variabili è un operazione comunissima. Il modo più semplice per effettuare questa operazione è di usare una variabile d'appoggio per contenere uno dei due valori e poi fare lo scambio.

tmp := A
A := B
B := tmp

Direi quasi banale, no? Senonché questo modo prevede la creazione di una variabile temporanea. Esiste tuttavia un algoritmo che fa lo stesso lavoro e non richiede nessuna variabile temporanea. Sto parlando dello Xor Swap, il nome deriva appunto da scambio con OR esclusive ( operazione bit a bit XOR ). Vediamo l'algoritmo:

X := X XOR Y
Y := X XOR Y
X := X XOR Y

Il bello di questo algoritmo è l'efficienza e la facilità nel ricordarlo. Vediamone un'implementazione in Java ed in C.

public static void main(String[] args)
{
	int x = 10;
	int y = 20;
	System.out.println("x = " + x + " y = " + y);

	x = x^y;
	y = x^y;
	x = x^y;

	System.out.println("x = " + x + " y = " + y);
} //[main]
void xorSwap (int *x, int *y)
 {
	 *x ^= *y;
	 *y ^= *x;
	 *x ^= *y;
 }

Altri articoli che ti potrebbero interessare:

  1. HSDPA, il futuro è senza fili
  2. Modulo per gestione delle operazioni su file in C
  3. iTunes Store senza iTuns
  4. Un MacWorld Expo senza Steve

Scrivi un Commento

(necessario)


XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>