Kaj je standardna zamenjava?

V računalniškem programiranju in računalniški znanosti je standardna zamenjava situacija v programu, v kateri morata dve spremenljivki izmenjati vrednosti, kar zahteva ustvarjanje tretje spremenljivke, ki deluje kot posrednik pri prenosu vrednosti. Standardna zamenjava je programska paradigma, kar pomeni, da jo je mogoče uporabiti v kateri koli situaciji, v kateri je treba izmenjati dva podatka, in ni vezana na noben tip podatkov ali programski jezik. V programih je veliko primerov, v katerih je treba zamenjati vrednosti, vendar je pogosto standardna komponenta v zbirkah in matrikah, kadar se uporablja z algoritmi za razvrščanje, ki mora elemente premakniti iz enega indeksa v zbirki v drugega, pri čemer uporablja začasno spremenljivko za shranjevanje vrednost se zamenja. Z vidika strojne opreme je lahko standardna zamenjava podprta nizkonivojska procesorska funkcija za nekatere skalarne vrste podatkov, kot so cela števila, kar pomeni, da vmesne vrednosti ni treba ustvariti v pomnilniku z naključnim dostopom (RAM) za zamenjavo dveh številk.

Koncept standardne zamenjave je mogoče videti s spremenljivkama A in B; na koncu standardne zamenjave bi moral B biti enak A in A bi moral biti enak B. Če program preprosto dodeli B A, bo vrednost A izgubljena in je pozneje ne bo mogoče dodeliti B. To zahteva uporabo začasna spremenljivka, ki bo hranila vrednost A, medtem ko je B dodeljen A. Zadnji korak je dodelitev začasne spremenljivke vrednosti B, s čimer se zaključi zamenjava.

Ena zelo pogostih aplikacij za standardno zamenjavo je uporaba algoritma za razvrščanje v matriki ali zbirki. Če je algoritem za razvrščanje ugotovil, da je treba podatke v nizu Indeks 1 zamenjati s podatki v Indeksu 10, se lahko izvede standardna zamenjava podatkov. To je mogoče narediti izjemno hitro z uporabo referenc kazalca v jezikih, kot je C.

V nekaterih objektno usmerjenih programskih jezikih lahko pride do zapletov, ko je treba zamenjati dva primerka objekta. V nekaterih zelo redkih primerih preprosta zamenjava sklic na objekt ne bo sprožila dejanske zamenjave. Namesto tega je edini način za izmenjavo objektov kloniranje notranjih podatkov, polje za poljem, med obema objektoma in začasno spremenljivko objekta.

Obstaja ena tehnika, ki jo je tehnično mogoče uporabiti za izvedbo standardne zamenjave z uporabo logičnega operaterja ekskluzivno ali (XOR). Zamenjava XOR temelji na dejstvu, da bosta dva bita, izračunana z XOR, v bistvu ustvarila masko, ki jo je mogoče obrniti z enim ali obema operatorjema. Na ta način lahko dve spremenljivki, A in B, zamenjate tako, da najprej ustvarite masko z XOR obeh spremenljivk, nato pa uporabite XOR, da najprej razkrijete vrednost za B in nato vrednost za A. Na žalost, čeprav se ta metoda izogiba ustvarjanje začasne spremenljivke, tudi ne bo zamenjal v vseh primerih, še posebej, ko sta A in B enaka drug drugemu in v primerih, ko bi optimizacija prevajalnika lahko spremenila dejansko operacijo.