Dans la programmation informatique et de l'informatique, un échange standard est une situation dans un programme dans lequel deux variables doivent avoir leurs valeurs échangées, ce qui nécessite la création d'une troisième variable d'agir en tant qu'intermédiaire quand les valeurs sont transférées. Un échange standard est un paradigme de programmation, ce qui signifie qu'il peut être appliqué à toute situation dans laquelle deux éléments de données doivent être échangées, et n'est pas lié à un type de données ou un langage de programmation. Il ya de nombreux cas dans les programmes dont les valeurs doivent être échangées, mais il est souvent un composant standard dans des collections et des tableaux lorsqu'il est utilisé avec des algorithmes de tri qui doit déplacer des éléments d'un index dans la collection à l'autre, en utilisant une variable temporaire pour contenir le valeur étant échangé. D'un point de vue matériel, un échange standard peut être une fonction de processeur à faible niveau de prise en charge pour certains types de données scalaires tels que les entiers, ce qui signifie la valeur intermédiaire n'a pas besoin d'être créé dans la mémoire vive (RAM) pour échanger deux chiffres.
Le concept d'un échange standard peut être vu avec les variables A et B, à la fin d'un échange standard, B doit être égale à A, et A doit être égal à B. Si un programme assigne simplement de B à A, alors la valeur d'un testament être perdu et ne peut ensuite être attribué à B. Cela nécessite l'utilisation d'une variable temporaire qui contiendra la valeur de A alors B est attribué à A. La dernière étape consiste à assigner la valeur de la variable temporaire à B, complétant le swap.
Une application très commun pour un échange standard est l'utilisation d'un algorithme de tri sur un tableau ou d'une collection. Si un algorithme de tri a déterminé que les données à l'index du tableau 1 doivent être échangés avec les données de l'indice 10, puis un échange standard des données peut être réalisée. Cela peut être fait exceptionnellement rapide en utilisant des références de pointeur dans des langages tels que C
Une complication peut survenir dans certains langages de programmation orientés objet lorsque deux instances d'objets doivent être permutés. Dans certains cas très rares, échangeant simplement les références de l'objet va pas initier un échange réel. Au lieu de cela, la seule façon d'échanger des objets est de cloner des données, le champ interne par le terrain, entre les deux objets et la variable d'objet temporaire.
Il ya une technique qui peut techniquement être utilisé pour effectuer un échange standard en utilisant l'opérateur logique OU exclusif (XOR). Un échange XOR repose sur le fait que, lorsque deux bits sont calculées avec XOR, ils seront essentiellement créer un masque qui peut être inversée par une ou les deux des opérateurs. De cette manière, deux variables, A et B, peuvent être échangés en créant d'abord un masque avec un XOR des deux variables, puis en utilisant XOR pour démasquer d'abord la valeur de B, puis la valeur de A. Malheureusement, bien que cette méthode évite la création d'une variable temporaire, il sera également pas de permutation dans tous les cas, en particulier lorsque A et B sont égaux les uns aux autres et dans les cas où l'optimisation compilateur peut modifier le fonctionnement réel.