Qu'est-ce qu'un échange standard?
En programmation informatique et en informatique, un échange standard est une situation dans un programme dans laquelle deux valeurs doivent échanger leurs valeurs, ce qui nécessite la création d'une troisième variable servant d'intermédiaire lors du transfert des valeurs. Un échange standard est un paradigme de programmation, ce qui signifie qu'il peut être appliqué à toute situation dans laquelle deux données doivent être échangées et qu'il n'est lié à aucun type de données ou langage de programmation. Il existe de nombreux cas dans les programmes dans lesquels les valeurs doivent être échangées, mais il s'agit souvent d'un composant standard dans les collections et les tableaux lorsqu'il est utilisé avec des algorithmes de tri qui doivent déplacer des éléments d'un index à un autre, en utilisant une variable temporaire valeur échangée. Du point de vue matériel, un échange standard peut être une fonction de processeur de bas niveau prise en charge pour certains types de données scalaires tels que les entiers, ce qui signifie que la valeur intermédiaire n'a pas besoin d'être créée dans la mémoire vive pour échanger deux nombres.
Le concept d'échange standard est visible avec les variables A et B; à la fin d'un échange standard, B doit être égal à A et A doit être égal à B. Si un programme attribue simplement B à A, la valeur de A sera perdue et ne pourra plus être affectée à B. Cela nécessite l'utilisation d'un variable temporaire qui contiendra la valeur de A alors que B est assigné à A. La dernière étape consiste à affecter la valeur de la variable temporaire à B, en effectuant le swap.
Une application très courante pour un échange standard consiste à utiliser un algorithme de tri sur un tableau ou une collection. Si un algorithme de tri a déterminé que les données de la matrice Index 1 doivent être échangées avec les données de l'Index 10, une permutation standard des données peut être effectuée. Cela peut être fait exceptionnellement rapidement 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'objet doivent être échangées. Dans de très rares cas, le simple fait d'échanger les références d'objet ne déclenchera pas un échange réel. Au lieu de cela, le seul moyen d'échanger les objets consiste à cloner les données internes, champ par champ, entre les deux objets et la variable d'objet temporaire.
Il existe une technique qui peut techniquement être utilisée pour effectuer un échange standard à l'aide de l'opérateur logique exclusive-or (XOR). Un échange XOR repose sur le fait que, lorsque deux bits sont calculés avec XOR, ils créent essentiellement un masque qui peut être inversé avec l'un des opérateurs ou les deux. De cette façon, deux variables, A et B, peuvent être échangées 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 Lorsqu’il crée une variable temporaire, il ne fera pas non plus de permutation dans tous les cas, en particulier lorsque A et B sont égaux et dans les cas où l’optimisation du compilateur pourrait modifier l’opération réelle.