O que é uma troca padrão?
Na programação e ciência da computação, uma troca padrão é uma situação em um programa no qual duas variáveis precisam trocar seus valores, exigindo a criação de uma terceira variável para atuar como intermediário quando os valores são transferidos. Uma troca padrão é um paradigma de programação, o que significa que pode ser aplicado a qualquer situação em que dois dados precisam ser trocados e não estão vinculados a nenhum tipo de dados ou linguagem de programação. Há muitos casos nos programas nos quais os valores precisam ser trocados, mas geralmente é um componente padrão em coleções e matrizes quando usado com algoritmos de classificação que devem mover itens de um índice na coleção para outra, usando uma variável temporária para manter o valor que está sendo trocado. Do ponto de vista do hardware, uma troca padrão pode ser uma função de processador de baixo nível suportada para alguns tipos de dados escalares, como números inteiros, o que significa que o valor intermediário não precisa ser criado em memória de acesso aleatório (RAM) para trocar dois números.
O conceito de uma troca padrão pode ser visto com as variáveis A e B; No final de uma troca padrão, B deve ser igual a, e A deve ser igual a B. Se um programa simplesmente atribuir B a A, o valor de A será perdido e mais tarde não poderá ser atribuído a B. Isso requer o uso de uma variável temporária que manterá o valor de uma enquanto B é atribuído a A. A etapa final é atribuir a variável temporária para, concluir o swap.
Um aplicativo muito comum para uma troca padrão é quando o uso de um algoritmo de classificação em uma matriz ou coleção. Se um algoritmo de classificação determinou que os dados no índice de matriz 1 devem ser trocados com os dados no índice 10, uma troca padrão dos dados pode ser executada. Isso pode ser feito excepcionalmente rápido usando referências de ponteiro em idiomas como c.
Uma complicação pode ocorrer em algumas linguagens de programação orientadas a objetos quando duas instâncias de objeto precisamser trocado. Em alguns casos muito raros, simplesmente trocar as referências de objeto não iniciará uma troca real. Em vez disso, a única maneira de trocar os objetos é clonar os dados internos, campo por campo, entre os dois objetos e a variável de objeto temporário.
Existe uma técnica que tecnicamente pode ser usada para executar uma troca padrão usando o operador lógico exclusivo-ou (xor). Uma troca XOR depende do fato de que, quando dois bits são calculados com XOR, eles essencialmente criam uma máscara que pode ser revertida com um ou ambos os operadores. Dessa forma, duas variáveis, A e B, podem ser trocadas pela primeira vez criando uma máscara com um XOR das duas variáveis e depois usando o XOR para desmascarar primeiro o valor para B e depois o valor para A. Infelizmente, embora esse método evite a criação de uma variável temporária, também não será a rewap em todas as instâncias;