ela é muito fácil de usa-la, caso não saiba oque é swap:
Xor Swap é um Algoritmo que usa a função lógica OU Exclusivo para trocar os valores de duas variáveis do
mesmo tipo, sem usar armazenamento temporário.
Ele utiliza a propriedade de que (A XOR B) XOR B = A.
Como ele utiliza a função booleana XOR, o algoritmo só irá funcionar com números escritos na base binária.
Como computadores só usam números binários, é um bom método a ser usado em programação.
Para explicar como funciona, vamos as equações do primeiro grau.
Vamos supor que o valor de X é 100 e o valor de Y é 10.
logo temos:
X ^= Y = X
Y ^= Y = Y
X ^= Y = X
Resultado: X fica 10 e Y fica 100, isto se chama swap(troca de valores), este método engana o computador
que realiza a troca.
Código
#define s_swap(%0,%1) (%0 ^= %1, %1 ^= %0, %0 ^= %1)
Fluxograma
Como usar ?
podemos usar de vários modos,
os mais correto é:
new value1 = 100;
new value2 = 10;
s_swap(value1, value2);
printf("%d SWAP %d", value1, value2);
Um exemplo mais avançado:
static stock BubbleSort(v[], size)
{
#if !defined s_swap
#define s_swap(%0,%1) (%0 ^= %1, %1 ^= %0, %0 ^= %1)
#endif
for(new i = 1; i != size; ++i)
{
for(new q = 0; (q != size - i); ++q)if(v[i] > v[q]) s_swap(v[q],v[i]);
}
}
No código acima, é um exemplo da função BubbleSort,
que breve mente estarei disponibilizando aqui..
Abraços.
Postar um comentário
0 comentários
Obrigado pelo seu comentário. Não publicamos neste blog comentários com palavras de baixo calão, denúncias levianas e troca de ofensas entre leitores.