0
Olá criei esta função porque eu estava necessitando,
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

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.