Wat is een standaardwissel?
In computerprogrammering en informatica is een standaardwap een situatie in een programma waarin twee variabelen hun waarden moeten uitgewisseld hebben, waardoor een derde variabele moet worden gemaakt als een tussenpersoon 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 instanties in programma's waarin waarden moeten worden verwisseld, maar het is vaak een standaardcomponent in collecties en arrays wanneer ze worden gebruikt met sorteeralgoritmen die items van de ene index in de verzameling naar de andere moeten verplaatsen, met behulp van een tijdelijke variabele om de waarde te houden die 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 Random Access Memory (RAM) om twee getallen te verwisselen.
Het concept van een standaardwap is te zien met de variabelen A en B; Aan het einde van een standaardwissel moet B gelijk zijn aan A, en a moet gelijk zijn aan B. Als een programma eenvoudig B toewijst aan A, dan zal de waarde van A verloren gaan en kan deze niet worden toegewezen aan B. Dit vereist het gebruik van een tijdelijke variabele die de waarde van een terwijl B wordt toegewezen aan A.
Een veel voorkomende toepassing voor een standaardwissel is bij het gebruik van een sorteeralgoritme op een 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 moetenworden 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 ontkoppelen en vervolgens de waarde voor A. Helaas, hoewel deze methode het creëren van een tijdelijke variabele, kan het ook geen ruil in alle gevallen maken, specifiek wanneer A en B zijn voor elkaar en in de gevallen van de werking van de werkelijke werking.