Skip to main content

Wat is een standaardwissel?

In computerprogrammering en informatica is een standaardwap een situatie in een programma waarin twee variabelen hun waarden moeten uitgewisseld hebben, waarvoor een derde variabele moet worden gemaakt om als tussenpersoon te fungeren wanneer de waarden worden overgedragen.Een standaardwap is een programmeerparadigma, wat betekent dat deze kan worden toegepast op elke situatie waarin twee gegevens moeten worden uitgewisseld en niet gekoppeld is aan een gegevenstype of programmeertaal.Er zijn veel gevallen in programma's waarin waarden moeten worden verwisseld, maar het is vaak een standaardcomponent in collecties en arrays bij gebruik met sorteeralgoritmen die items van de ene index in de collectie naar de andere moeten verplaatsen, met behulp van een tijdelijke variabele om het vast te houdenwaarde wordt verwisseld.Vanuit een hardwareperspectief kan een standaardwap een ondersteunde processorfunctie op laag niveau zijn voor sommige scalaire gegevenstypen zoals gehele getallen, wat betekent dat de intermediaire waarde niet hoeft te worden gemaakt in willekeurig toegangsgeheugen (RAM) om twee getallen te verwisselen.

Het concept van een standaardwissel is te zien met de variabelen A en B;Aan het einde van een standaardwissel moet B gelijk zijn aan A, en a moet gelijkTijdelijke variabele die de waarde van een while bes bevat, wordt toegewezen aan A. De uiteindelijke stap is om de tijdelijke variabele waarde toe te wijzen aan B, het voltooien van de swap. Een zeer veel voorkomende toepassing voor een standaardwap is bij het gebruik van een sorteeralgoritme aaneen array of verzameling.Als een sorteeralgoritme heeft vastgesteld dat de gegevens bij array -index 1 moeten worden verwisseld met de gegevens op index 10, kan een standaardwissel van de gegevens worden uitgevoerd.Dit kan uitzonderlijk snel worden gedaan met behulp van pointerreferenties in talen zoals C. Een complicatie kan optreden in sommige objectgeoriënteerde programmeertalen wanneer twee objectinstanties moeten worden verwisseld.In sommige zeer zeldzame gevallen zal het simpelwegwisselen van de objectverwijzingen geen daadwerkelijke swap initiëren.In plaats daarvan is de enige manier om de objecten uit te wisselen om de interne gegevens, het veld per veld te klonen tussen de twee objecten en de tijdelijke objectvariabele. Er is één techniek die technisch kan worden gebruikt om een standaardwap uit te voeren met behulp van de exclusieve-of (xor) logische operator.Een XOR -swap vertrouwt op het feit dat, wanneer twee bits worden berekend met XOR, ze in wezen een masker zullen maken dat kan worden omgekeerd met een of beide operators.Op deze manier kunnen twee variabelen, A en B, worden verwisseld door eerst een masker te maken met een XOR van de twee variabelen en vervolgens Xor te gebruiken om eerst de waarde voor B te ontmaskeren en vervolgens de waarde voor A. Hoewel deze methode vermijdtHet creëren van een tijdelijke variabele, het zal ook in alle gevallen geen swap maken, specifiek wanneer A en B gelijk zijn aan elkaar en in gevallen waarin compileroptimalisatie de werkelijke werking kan veranderen.