Qu'est-ce qu'un échange standard?

Dans la programmation informatique et l'informatique, un swap standard est une situation dans un programme dans lequel deux variables doivent faire échanger leurs valeurs, nécessitant la création d'une troisième variable pour agir comme intermédiaire lorsque les valeurs sont transférées. Un échange standard est un paradigme de programmation, ce qui signifie qu'il peut être appliqué à n'importe quelle situation dans laquelle deux éléments de données doivent être échangés et ne sont liés à 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 c'est souvent un composant standard dans les collections et les tableaux lorsqu'ils sont utilisés avec des algorithmes de tri qui doivent déplacer les éléments d'un index de la collection à une autre, en utilisant une variable temporaire pour maintenir la valeur échangée. Du point de vue du matériel, un swap 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 d'accès aléatoire (RAM) pour échanger deux nombres.

Le concept d'un swap standard peut être vu avec les variables A et B; À la fin d'un swap standard, B devrait être égal A, et A doit être égal B. Si un programme attribue simplement B à A, alors la valeur de A sera perdue et ne peut pas être affectée plus tard à B. Cela nécessite l'utilisation d'une variable temporaire qui maintiendra la valeur d'un temps B est attribuée à A. L'étape finale consiste à attribuer la variable temporaire à B à B, en terminant le swap.

Une application très courante pour un swap standard est lors de l'utilisation d'un algorithme de tri sur un tableau ou une collection. Si un algorithme de tri a déterminé que les données à l'indice du tableau 1 doivent être échangées avec les données à l'indice 10, un échange standard des données peut être effectué. Cela peut être fait exceptionnellement rapidement en utilisant des références de pointeur dans des langues telles que c.

Une complication peut se produire dans certains langages de programmation orientés objet lorsque deux instances d'objet doiventêtre échangé. Dans certains cas très rares, le simple fait d'échanger les références d'objet n'initiera pas un échange réel. Au lieu de cela, la seule façon d'échanger les objets est de 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 exclusif ou (XOR). Un échange XOR s'appuie sur le fait que, lorsque deux bits sont calculés avec XOR, ils créeront essentiellement un masque qui peut être inversé avec un ou les deux opérateurs. 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 la création d'une variable temporaire, il ne fera pas non plus de swap dans tous les cas, en particulier lorsqu'une opération et b sont égaux à tous les autres et dans les cas dans les cas dans les cas où l'optimisation de la compilation peut changer l'opération et B

DANS D'AUTRES LANGUES