Što je standardna zamjena?

U računalnom programiranju i informatici, standardna zamjena je situacija u programu u kojoj dvije varijable trebaju razmijeniti svoje vrijednosti, što zahtijeva stvaranje treće varijable koja će djelovati kao posrednik kada se vrijednosti prenose. Standardna zamjena je programska paradigma, što znači da se može primijeniti na bilo koju situaciju u kojoj je potrebno razmjenjivati ​​dva podatka i nije vezan ni za jednu vrstu podataka ili programski jezik. Postoji mnogo slučajeva u programima u kojima se vrijednosti moraju zamijeniti, ali često je standardna komponenta u zbirkama i nizovima kada se koristi s algoritmima za razvrstavanje koji moraju premjestiti stavke iz jednog indeksa u zbirci u drugi, koristeći privremenu varijablu za držanje vrijednost koja se zamjenjuje. Iz hardverske perspektive, standardna zamjena može biti podržana funkcija procesora niske razine za neke skalarne tipove podataka kao što su cijeli brojevi, što znači da se posrednička vrijednost ne mora kreirati u memoriji s slučajnim pristupom (RAM) za zamjenu dva broja.

Koncept standardne zamjene može se vidjeti s varijablama A i B; na kraju standardne zamjene, B bi trebao biti jednak A, a A bi trebao biti jednak B. Ako program jednostavno dodijeli B A, tada će vrijednost A biti izgubljena i ne može se kasnije dodijeliti B. To zahtijeva korištenje privremena varijabla koja će zadržati vrijednost A dok je B dodijeljen A. Posljednji korak je dodijeliti vrijednost privremene varijable B, dovršavajući zamjenu.

Jedna vrlo uobičajena primjena za standardnu ​​zamjenu je kada se koristi algoritam za sortiranje na nizu ili kolekciji. Ako je algoritam za sortiranje utvrdio da se podaci u nizu Indeks 1 moraju zamijeniti podacima u Indeksu 10, tada se može izvesti standardna zamjena podataka. To se može učiniti iznimno brzo pomoću referenci pokazivača na jezicima kao što je C.

U nekim objektno orijentiranim programskim jezicima može doći do komplikacija kada je potrebno zamijeniti dvije instance objekta. U nekim vrlo rijetkim slučajevima, jednostavno mijenjanje referenci objekta neće pokrenuti stvarnu zamjenu. Umjesto toga, jedini način za razmjenu objekata je kloniranje internih podataka, polje po polje, između dva objekta i privremene varijable objekta.

Postoji jedna tehnika koja se tehnički može koristiti za izvođenje standardne zamjene pomoću logičkog operatora isključivanja ili (XOR). Zamjena XOR-a se oslanja na činjenicu da, kada se dva bita izračunaju s XOR-om, oni će u biti stvoriti masku koja se može obrnuti s jednim ili oba operatora. Na ovaj način, dvije varijable, A i B, mogu se zamijeniti tako da se prvo kreira maska ​​s XOR od dvije varijable, a zatim se pomoću XOR demaskira prvo vrijednost za B, a zatim vrijednost za A. Nažalost, iako ova metoda izbjegava stvaranje privremene varijable, također neće izvršiti zamjenu u svim slučajevima, posebno kada su A i B jednaki jedno drugom i u slučajevima u kojima bi optimizacija prevoditelja mogla promijeniti stvarnu operaciju.