Skip to main content

Τι είναι μια τυπική ανταλλαγή;

Στον προγραμματισμό των υπολογιστών και την επιστήμη των υπολογιστών, μια τυπική ανταλλαγή είναι μια κατάσταση σε ένα πρόγραμμα στο οποίο δύο μεταβλητές πρέπει να ανταλλάξουν τις αξίες τους, απαιτώντας τη δημιουργία μιας τρίτης μεταβλητής για να ενεργεί ως ενδιάμεσος όταν μεταφέρονται οι τιμές.Μια τυπική ανταλλαγή είναι ένα πρότυπο προγραμματισμού, που σημαίνει ότι μπορεί να εφαρμοστεί σε οποιαδήποτε κατάσταση στην οποία πρέπει να ανταλλάσσονται δύο κομμάτια δεδομένων και δεν συνδέεται με κανέναν τύπο δεδομένων ή γλώσσα προγραμματισμού.Υπάρχουν πολλές περιπτώσεις σε προγράμματα στα οποία οι τιμές πρέπει να ανταλλάσσονται, αλλά συχνά αποτελεί τυποποιημένο στοιχείο σε συλλογές και συστοιχίες όταν χρησιμοποιούνται με αλγόριθμους ταξινόμησης που πρέπει να μεταφέρουν αντικείμενα από ένα δείκτη στη συλλογή σε άλλη, χρησιμοποιώντας μια προσωρινή μεταβλητή για να κρατήσει τοη τιμή που ανταλλάσσεται.Από την άποψη του υλικού, μια τυπική ανταλλαγή μπορεί να είναι μια υποστηριζόμενη λειτουργία επεξεργαστή χαμηλού επιπέδου για ορισμένους τύπους κλιμακωτών δεδομένων, όπως ακέραιοι, πράγμα που σημαίνει ότι η ενδιάμεση τιμή δεν χρειάζεται να δημιουργηθεί σε μνήμη τυχαίας πρόσβασης (RAM) για να ανταλλάξει δύο αριθμούς.Η έννοια της τυπικής ανταλλαγής μπορεί να φανεί με τις μεταβλητές Α και Β.Στο τέλος μιας τυπικής ανταλλαγής, το Β θα πρέπει να ισούται με το Α, και το Α θα πρέπει να ισούται με Β. Εάν το πρόγραμμα απλώς εκχωρεί το Β στο Α, τότε η τιμή του Α θα χαθεί και δεν μπορεί αργότερα να εκχωρηθεί στο Β. Αυτό απαιτεί τη χρήση του ΑΗ προσωρινή μεταβλητή που θα διατηρήσει την τιμή ενός χρόνου Β έχει εκχωρηθεί στο Α. Το τελικό βήμα είναι να αντιστοιχιστεί η προσωρινή μεταβλητή τιμή στο Β, ολοκληρώνοντας την ανταλλαγή.μια σειρά ή μια συλλογή.Εάν ένας αλγόριθμος ταξινόμησης έχει διαπιστώσει ότι τα δεδομένα στο δείκτη Array 1 πρέπει να αλλάξουν με τα δεδομένα στο δείκτη 10, τότε μπορεί να πραγματοποιηθεί τυπική ανταλλαγή των δεδομένων.Αυτό μπορεί να γίνει εξαιρετικά γρήγορη χρησιμοποιώντας αναφορές δείκτη σε γλώσσες όπως το C.

μπορεί να εμφανιστεί επιπλοκή σε ορισμένες γλώσσες προγραμματισμού προσανατολισμένων αντικειμένων όταν πρέπει να αλλάξουν δύο στιγμές αντικειμένων.Σε μερικές πολύ σπάνιες περιπτώσεις, η απλή ανταλλαγή των αναφορών αντικειμένων δεν θα ξεκινήσει μια πραγματική ανταλλαγή.Αντ 'αυτού, ο μόνος τρόπος για την ανταλλαγή των αντικειμένων είναι να κλωνοποιηθούν τα εσωτερικά δεδομένα, το πεδίο ανά πεδίο, μεταξύ των δύο αντικειμένων και της μεταβλητής προσωρινής αντικειμένων. Υπάρχει μια τεχνική που μπορεί να χρησιμοποιηθεί τεχνικά για την εκτέλεση μιας τυπικής ανταλλαγής χρησιμοποιώντας το αποκλειστικό-ή (XOR) λογικό χειριστή.Μια ανταλλαγή XOR βασίζεται στο γεγονός ότι, όταν δύο bits υπολογίζονται με XOR, ουσιαστικά θα δημιουργήσουν μια μάσκα που μπορεί να αντιστραφεί με έναν ή και τους δύο χειριστές.Με αυτόν τον τρόπο, δύο μεταβλητές, Α και Β, μπορούν να ανταλλαγούν δημιουργώντας πρώτα μια μάσκα με ένα XOR από τις δύο μεταβλητές, στη συνέχεια χρησιμοποιώντας το XOR για να αποκαλύψει πρώτα την τιμή για το Β και στη συνέχεια την τιμή για το Α. Δυστυχώς, αν και αυτή η μέθοδος αποφεύγειΗ δημιουργία μιας προσωρινής μεταβλητής, δεν θα κάνει επίσης ανταλλαγή σε όλες τις περιπτώσεις, ειδικά όταν τα Α και Β είναι ίσα μεταξύ τους και σε περιπτώσεις στις οποίες η βελτιστοποίηση του μεταγλωττιστή μπορεί να αλλάξει την πραγματική λειτουργία.