Πολύπλοκες δομές και αναζήτηση πληροφοριών σε αυτές. Τι είναι οι δομές δεδομένων; Σκοπός της βάσης δεδομένων

Τι είναι μια δομή δεδομένων;

Πάντα πίστευα ότι " δομή δεδομένων" είναι ένας όρος που δημιουργήθηκε ειδικά για να μας μπερδέψει. Στο τέλος, μπόρεσα να καταλάβω ποια ήταν η δομή δεδομένων αναδιατάσσοντας απλώς τις λέξεις στον όρο " δομή δεδομένων" - Με " δομή δεδομένων" επί " δομή δεδομένων". Σε ένα τέτοιο πλαίσιο, η εστίαση μετατοπίζεται από τα δεδομένα (πράγματα) στη δομή (οργάνωση). Με άλλα λόγια, δεν εστιάζουμε στα πράγματα, αλλά στη διαδικασία οργάνωσης των πραγμάτων.

Ας προσποιηθούμε ότι αυτά για τα οποία μιλάμε είναι βιβλία. Ποια έκφραση έχει πιο νόημα: βιβλία με δομή ή οργάνωση βιβλίων; Νομίζω ότι είναι το τελευταίο. Η έμφαση δίνεται στην οργάνωση και όχι στα βιβλία.

Διαφορετικοί τύποι δομών δεδομένων

Τα βιβλία, όπως και τα δεδομένα, μπορούν να οργανωθούν με διαφορετικούς τρόπους. Ας φανταστούμε ότι έχουμε 20 βιβλία. Πώς τα δομούμε;

Αν θέλουμε να βρούμε γρήγορα ένα βιβλίο, τότε χρειαζόμαστε κάποιου είδους ευρετήριο. Για παράδειγμα, μπορείτε να τακτοποιήσετε βιβλία σε ένα ράφι αλφαβητική σειρά. Χάρη σε αυτό, μπορούμε να βρούμε γρήγορα τον όγκο που χρειαζόμαστε.

Αν θέλουμε να διαβάσουμε όλα τα βιβλία με μια συγκεκριμένη σειρά, για παράδειγμα, να διαβάσουμε πρώτα το βιβλίο που εμφανίστηκε πρώτο στη συλλογή μας και ούτω καθεξής μέχρι το τελευταίο βιβλίο, τότε πρέπει να τακτοποιήσουμε τα βιβλία σύμφωνα με αυτό. Επιπλέον, θα θέσουμε έναν συγκεκριμένο περιορισμό, ώστε να μπορούμε να ξαναδιαβάζουμε βιβλία μόνο με αυτή τη σειρά.

Αν δεν έχουμε αρκετό χώρο για να αποθηκεύσουμε όλα τα βιβλία σε ένα δωμάτιο, τότε μπορούμε να τα τοποθετήσουμε σε όλο το σπίτι. Μετά από αυτό, δημιουργήστε μια λίστα με δύο στήλες: η πρώτη στήλη θα περιέχει τον τίτλο του βιβλίου και η δεύτερη θα περιέχει τη θέση του.

Είναι πλέον σαφές ότι υπάρχουν πολλοί τρόποι ταξινόμησης βιβλίων. Υπάρχουν όμως και πολλά διάφοροι τύποιΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Η δομή δεδομένων που χρησιμοποιούμε στην ανάπτυξη Ιστού εξαρτάται από συγκεκριμένες συνθήκες.

Πρέπει να καταλάβουμε ότι είναι δυνατή η χρήση και η δημιουργία αυτών των δομών δεδομένων χωρίς ιδιαίτερα εξειδικευμένες δεξιότητες προγραμματισμού. Το μόνο που χρειαζόμαστε είναι μια κατανόηση της JavaScript, των πιο απλών τύπων δεδομένων της ( Για παράδειγμα, λογικές εκφράσεις ) και τύπους αναφοράς ( για παράδειγμα, αντικείμενα).

Είναι δύσκολο να το φανταστεί κανείς στην αρχή, αλλά μην ανησυχείτε. Συνήθιζα να σκεφτώ ένα σύνολο, το οποίο είναι επίσης ένας τύπος δομής δεδομένων, ως απλώς μια συλλογή. Αλλά ένα σύνολο δεν είναι ένα πράγμα, αλλά ένα όνομα που έχει εκχωρηθεί συγκεκριμένη μέθοδοοργάνωση δεδομένων. Εξίσου σημαντικό είναι ότι το σύνολο δημιουργείται χρησιμοποιώντας αντικείμενα.

Ο στόχος μας

Αυτή η σειρά άρθρων αφορά τη δόμηση δεδομένων με χρησιμοποιώντας JavaScriptθα πρέπει να σας δείξει ότι οι δομές δεδομένων χρησιμοποιούνται για να κάνουν τη ζωή μας ευκολότερη.

Δεδομένου ότι υπάρχουν πάρα πολλές δομές δεδομένων για να καλυφθούν πλήρως σε αυτήν τη σειρά άρθρων, θα καλύψουμε μόνο μερικές από αυτές, αλλά οι πιο συνηθισμένες είναι:

  • Στοίβα και ουρά.
  • Μεμονωμένα και διπλά συνδεδεμένες λίστες.
  • Δέντρο.

συμπέρασμα

Όταν ολοκληρώσουμε αυτήν τη σειρά άρθρων, ελπίζω ότι όχι μόνο θα ξέρετε πώς να εφαρμόσετε κοινές δομές δεδομένων, αλλά θα καταλάβετε επίσης ότι χρησιμοποιούνται γύρω σας. Τότε θα αρχίσετε να σκέφτεστε διαφορετικά για τα δεδομένα και την οργάνωσή τους.

Μετάφραση του άρθρου " Δομές δεδομένων με JavaScript: Τι είναι μια δομή δεδομένων;«προετοιμάστηκε από τη φιλική ομάδα του έργου.

Καλό κακό

    Ένα δέντρο είναι μια από τις πιο συχνά χρησιμοποιούμενες δομές δεδομένων στην ανάπτυξη Ιστού. Κάθε προγραμματιστής ιστού που έγραψε κώδικα HTML και τον φόρτωσε στο πρόγραμμα περιήγησης δημιούργησε...

Ταξινομήσεις δομών δεδομένων

Τα δεδομένα στη μνήμη του υπολογιστή αντιπροσωπεύονται ως μια ακολουθία bit. Οι ακολουθίες δυαδικών ψηφίων δεν είναι αρκετά δομημένες, γεγονός που καθιστά δύσκολο να γίνει πρακτική χρήση. Ως εκ τούτου, οι δομές δεδομένων χρησιμοποιούνται στην πράξη.

Ορισμός 1

Δομήδεδομένα είναι ένα σύνολο στοιχείων δεδομένων και εσωτερικές συνδέσειςμεταξυ τους.

Υπάρχει απλόςΚαι ολοκληρωμένοΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Οι απλές δομές δεδομένων μειώνονται σε bit και οργανώνονται απευθείας από bit. Οι απλές δομές περιλαμβάνουν:

  • αριθμητικός;
  • κομμάτι;
  • συμβολικός;
  • σπαζοκεφαλιά;
  • δείκτες.

Οι ολοκληρωμένες δομές δεδομένων οργανώνονται από απλές και άλλες ολοκληρωμένες δομές.

Είναι απαραίτητο να γίνει διάκριση φυσικόςΚαι λογικόςδομή δεδομένων. Όταν μιλάνε για φυσική δομήαπλούς τύπους, αυτό σημαίνει το μέγεθός τους και τον τρόπο που τα bit τοποθετούνται στη μνήμη. Από την άποψη της λογικής δομής, ένας απλός τύπος είναι μια αδιαίρετη στοιχειώδης μονάδα.

Ορισμός 2

Μεταβλητότηταδομή ονομάζεται μια αλλαγή στον αριθμό των στοιχείων και των συνδέσεων μεταξύ τους.

Σύμφωνα με το πρόσημο της μεταβλητότητας, οι δομές χωρίζονται σε

  • Στατική (vecotr, πίνακας, σύνολο, εγγραφή, πίνακας).
  • Δυναμική (στοίβα, ουρά, συμβολοσειρά, γραμμική σχετικές λίστες, διακλαδισμένες συνδεδεμένες λίστες, γραφήματα, δέντρα.).

Τα στοιχεία σε μια δομή μπορεί να είναι ταξινομημένα ή μη. Σύμφωνα με αυτό το χαρακτηριστικό, οι δομές χωρίζονται σε

  • Μη γραμμικό (λίστα πολλαπλών συνδέσμων, γράφημα, δέντρο);
  • Γραμμική με διαδοχική κατανομή (διάνυσμα, συμβολοσειρά, πίνακας, στοίβα, ουρά).
  • Γραμμική με αυθαίρετη συνδεδεμένη κατανομή (απλά συνδεδεμένες και διπλά συνδεδεμένες λίστες).

Απλές δομές και τύποι δεδομένων

Οι απλές δομές δεδομένων ονομάζονται επίσης πρωτόγονες ή βασικές δομές. Σε γλώσσες προγραμματισμού απλές δομέςστοιχεία που παρουσιάζονται απλοί τύποιδεδομένα. ΣΕ διάφορες γλώσσεςΣτον προγραμματισμό, το σύνολο των τύπων δεδομένων είναι κάπως διαφορετικό, αλλά υπάρχουν ορισμένες γενικές αρχές.

Ακέραιος τύποςχρησιμοποιείται για να αναπαραστήσει τον αριθμό των διακριτών αντικειμένων. Οι ακέραιοι αριθμοί μπορεί να είναι ανυπόγραφοι ή αρνητικοί. Η εσωτερική αναπαράσταση ενός ακέραιου αριθμού μπορεί να είναι 1, 2 ή 4 byte.

Οι πραγματικοί αριθμοί αντιπροσωπεύονται ως μορφή κινητής υποδιαστολής. Ένας αριθμός κινητής υποδιαστολής αναπαρίσταται χρησιμοποιώντας δύο ακέραιους αριθμούς– παραγγελία και matisse, καθώς και υπογραφή.

Οταν δυαδικό σύστημασημειογραφία B=2.

Δεκαδικός τύποςΔεν υποστηρίζονται όλες οι γλώσσες προγραμματισμού. Ένας αριθμός αυτού του τύπου αντιπροσωπεύεται ως m δεκαδικά ψηφίαεκ των οποίων d ψηφία βρίσκονται στα δεξιά της υποδιαστολής.

Για περιπτώσεις που χρειάζεται να εργαστείτε με μεμονωμένα δυαδικά ψηφία ενός αριθμού, παρέχεται τύπος δεδομένων bit. Τα δεδομένα σε αυτό αντιπροσωπεύονται από ένα σύνολο bit συνδυασμένων σε byte ή λέξεις. Όλες οι λειτουργίες με έναν τύπο bit περιλαμβάνουν την πρόσβαση σε κάθε bit ξεχωριστά.

Μεταβλητός boolean τύπου μπορεί να πάρει μία από τις δύο τιμές: true ή false. Για να αποθηκεύσετε μια μεταβλητή Boolean, χρειάζεται ένα byte μνήμης. Σε αυτήν την περίπτωση, η τιμή "false" κωδικοποιείται με μηδενική τιμή byte και η τιμή "true" κωδικοποιείται με οποιαδήποτε τιμή εκτός από το μηδέν.

Τύπος χαρακτήρασας επιτρέπει να αναπαραστήσετε δεδομένα ως μια ακολουθία συμβόλων κάποιου προκαθορισμένου συνόλου. Κάθε σύμβολο του συνόλου αποθηκεύεται στη μνήμη ως ακολουθία bit. Η αντιστοιχία μεταξύ χαρακτήρων και τέτοιων ακολουθιών ονομάζεται κωδικοποίηση. Διαφορετικές κωδικοποιήσεις αντιπροσωπεύουν χαρακτήρες ως ακολουθίες bit διαφορετικού μήκους.

Δείκτηςείναι μια μεταβλητή της οποίας η τιμή είναι η διεύθυνση ενός κελιού μνήμης. Έτσι, ο δείκτης αναφέρεται σε ένα συγκεκριμένο μπλοκ δεδομένων, υποδεικνύοντας το πρώτο του κελί.

Παραδείγματα στατικών δομών

Για να αναφερθείτε σε ένα στοιχείο, πρέπει να χρησιμοποιήσετε το όνομα του πίνακα και το ευρετήριο του στοιχείου. Στη μνήμη, οι πίνακες βρίσκονται σε κελιά που βρίσκονται το ένα μετά το άλλο.

Παράδειγμα 1

Ας δοθεί ένας πίνακας με το όνομα A.

Τότε το στοιχείο Α είναι ίσο με 30.

Παράδειγμα 2

Δισδιάστατος πίνακαςείναι ένας πίνακας, κάθε στοιχείο του οποίου είναι από μόνο του ένας μονοδιάστατος πίνακας.

Σε έναν δισδιάστατο πίνακα, κάθε στοιχείο έχει δύο δείκτες.

Ορισμός 4

Οι εγγραφές (πίνακες κατακερματισμού, συσχετιστικοί πίνακες) είναι πίνακες που ευρετηριάζονται όχι με φυσικούς αριθμούς, αλλά από συμβολοσειρές.

Ο δείκτης ενός στοιχείου σε έναν τέτοιο πίνακα ονομάζεται κλειδί. Για να αναφερθούμε σε ένα στοιχείο, χρησιμοποιούνται το όνομα και το ευρετήριο του πίνακα.

Παράδειγμα 3

Ας δοθεί ένας πίνακας κατακερματισμού με το όνομα B.

Τότε το στοιχείο του πίνακα Β['λαχανικό'] ισούται με 'αγγούρι'.

Παραδείγματα δυναμικών κατασκευών

Για δυναμικές δομές, η μνήμη εκχωρείται εν κινήσει κατά την εκτέλεση του προγράμματος. Για να δουλέψω με δυναμικούς τύπουςδεδομένα σε διαφορετικές γλώσσεςΟι δείκτες χρησιμοποιούνται ευρέως στον προγραμματισμό. Οι ίδιοι οι δείκτες είναι στατικού τύπου.

Σωρόςείναι ένα διάνυσμα στο οποίο το καθένα επόμενο στοιχείοπου απευθύνεται με δείκτη στο τρέχον στοιχείο. Τα σχήματα δείχνουν τη διαδοχική προσθήκη στοιχείων στη στοίβα και τη διαδοχική αφαίρεση.

Για να εξαγάγετε ένα στοιχείο, πρέπει πρώτα να εξαγάγετε διαδοχικά όλα τα στοιχεία που προστέθηκαν μετά από αυτό. Το στοιχείο που προστέθηκε πρώτο μπορεί να αφαιρεθεί μόνο τελευταίο.

Ουράεπίσης μια δυναμική δομή, η οποία διαφέρει από τη στοίβα με την παρουσία δύο δεικτών: στον πρώτο και τελευταίο στοιχείοουρές. Τα νέα στοιχεία γράφονται μετά το τελευταίο στοιχείο που γράφτηκε. Και η επιλογή των στοιχείων ξεκινά από την πρώτη. Με αυτόν τον αλγόριθμο, το στοιχείο που προστέθηκε πρώτο μπορεί να ληφθεί πρώτα.

ΤΥΠΟΙ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Οδηγίες για τον κλάδο «Αλγόριθμοι και Δομές Δεδομένων»

Συντάχθηκε από τον Ο.Λ. Τσαγκάεβα

Ετοιμάστηκε από το τμήμα " Λογισμικόκαι συστήματα» Ομοσπονδιακό Εκπαιδευτικό Ίδρυμα UrFU

Εισαγωγή

ΣΕ Στον κόσμο γύρω μας υπάρχει μια τεράστια ποικιλία αντικειμένων, αντικειμένων, φαινομένων, διαδικασιών που εμφανίζονται μέσω πληροφοριών.

Κάθε οντότητα (αντικείμενο, φαινόμενο) που αντιπροσωπεύεται από πληροφορίες έχει έναν αριθμό χαρακτηριστικών ιδιοτήτων της (χαρακτηριστικά, σημεία, παράμετροι, χαρακτηριστικά, στιγμές). Για παράδειγμα, οι ιδιότητες ενός υλικού είναι το βάρος, οι διαστάσεις, ο βαθμός, η τιμή, ο αριθμός αντικειμένου κ.λπ. Ιδιότητες-σημάδια που χαρακτηρίζουν μια οντότητα ως αγοραστή είναι το όνομα, το τμήμα υπαγωγής, η διεύθυνση, ο αριθμός τρεχούμενου λογαριασμού στην Κρατική Τράπεζα , και τα λοιπά.

Οι ιδιότητες μιας φυσικής οντότητας εμφανίζονται χρησιμοποιώντας μεταβλητές, που είναι στοιχειώδεις μονάδες πληροφοριών και ονομάζονται λεπτομέρειες.

Τα στηρίγματα είναι λογικά αδιαίρετο στοιχείοοποιοδήποτε σύνθετο σύνολο πληροφοριών, που συσχετίζεται με μια συγκεκριμένη ιδιότητα του αντικειμένου ή της διαδικασίας που εμφανίζεται από τις πληροφορίες.

ΣΕ των επεξεργασμένων πληροφοριών, οι λεπτομέρειες αντιπροσωπεύονται σαν από «άτομα», από τα οποία συναρμολογούνται όλες οι άλλες, πιο σύνθετες δομές σχηματισμού πληροφοριών. Και αντίστροφα, μονάδες πληροφοριών οποιασδήποτε πολυπλοκότητας μπορούν, με διαδοχική αποσύνθεση στα συστατικά τους συστατικά, τελικά να χωριστούν σε τέτοια συστατικά - μεταβλητές ποσότητες που δεν μπορούν να διαιρεθούν περαιτέρω λογικά. Τέτοια στοιχειώδη στοιχεία θα είναι οι λεπτομέρειες.

Άλλα συνώνυμα των στηρίξεων που απαντώνται συχνά στη λογοτεχνία είναι στοιχείο, πεδίο, όρος, χαρακτηριστικόιδιότητα.

Κάθε στήριγμα έχει ένα όνομα. Κατά τον αλγόριθμο και τον προγραμματισμό με σκοπό τη συμπαγή γραφή, οι συντομογραφίες χρησιμοποιούνται συχνότερα αναγνωριστικά ονόματα,με συγκεκριμένες υλοποιήσεις που συνήθως περιορίζουν το μήκος, το αλφάβητο και το εύρος τους. Σε ορισμένες περιπτώσεις, επιτρέπεται επίσης η χρήση συνωνύμων για ονόματα σκηνικών, συμπεριλαμβανομένων τέτοιων πλήρων ονομάτων που χρησιμοποιούνται μόνο σε εξωτερικά έγγραφα, για παράδειγμα, ως κεφαλίδες γραφήματος αναφοράς.

Κάθε χαρακτηριστικό είναι εγγενές σε ένα συγκεκριμένο πεπερασμένο σύνολο τιμών, ανάλογα με τα χαρακτηριστικά της ιδιότητας του αντικειμένου (φαινόμενο) που αυτό το χαρακτηριστικό εμφανίζει πληροφοριακά. Αυτό είναι ένα σύνολο που ονομάζεται κλάση τιμών, μία, για παράδειγμα, για την παράμετρο "θερμοκρασία ασθενούς" και μία άλλη για το χαρακτηριστικό "φύλο του ασθενούς".

Η τιμή του χαρακτηριστικού, επομένως, σε κάθε δεδομένη χρονική στιγμή είναι μία από τις θέσεις της κατηγορίας τιμών αυτού του χαρακτηριστικού, η οποία, όπως αναμένεται, αντανακλά την αντίστοιχη κατάσταση (από ένα σύνολο καταστάσεων) της ιδιότητας του το αντικείμενο (φαινόμενο) που χαρακτηρίζει την ιδιότητα. Έτσι, η τρέχουσα τιμή της μεταβλητής "θερμοκρασία ασθενούς" μπορεί να είναι 37,4° και η μεταβλητή "φύλο ασθενούς" μπορεί να είναι "άρρεν". Με άλλα λόγια, η τιμή του χαρακτηριστικού χρησιμοποιείται για να αναπαραστήσει την τιμή της αντίστοιχης ιδιότητας οντότητας.

Υπάρχουν διάφοροι τύποι χαρακτηριστικών ανάλογα με τους τύπους τιμών που μπορούν να έχουν. Οι πιο συνηθισμένοι τύποι στηρίξεων, ωστόσο, είναι αριθμητικό και κείμενο.

Προϋποθέσεις αριθμητικός τύποςχαρακτηρίζουν τις ποσοτικές ιδιότητες των οντοτήτων που λαμβάνονται ως αποτέλεσμα μέτρησης φυσικών μονάδων, μέτρησης, ζύγισης, υπολογισμών με βάση άλλα ποσοτικά δεδομένα κ.λπ. Επομένως, οι τιμές τέτοιων λεπτομερειών είναι αριθμοί με όλα τα χαρακτηριστικά και χαρακτηριστικά τους.

Σε συγκεκριμένες αναπαραστάσεις, εμφανίζονται διάφοροι τύποι αριθμητικών μεγεθών ανάλογα με την κατηγορία των αριθμών, το σύστημα αριθμών, τη στερέωση της υποδιαστολής, τη συσκευασία και άλλα. επιβάλλονται περιορισμοί στο εύρος των αριθμών, τις μορφές για την αναπαράστασή τους στην είσοδο/έξοδο και διάφορα μέσαακόμη και μέσα στην ίδια υλοποίηση. Δεδομένου ότι όλες οι λεπτομέρειες αριθμητικών τύπων χρησιμοποιούνται ενεργά σε διάφορα αριθμητικές πράξεις, και τα περισσότερα από αυτά δημιουργούνται γενικά ως αποτέλεσμα τέτοιων λειτουργιών, θα πρέπει πάντα να λαμβάνονται υπόψη οι υποδεικνυόμενες διαφορές και περιορισμοί, καθώς και η ανάγκη για μια κατάλληλη συσκευή μετασχηματισμού.

Προϋποθέσεις τύπο κειμένουσυνήθως εκφράζεται ποιοτικές ιδιότητεςοντότητες και χαρακτηρίζουν τις συνθήκες υπό τις οποίες έλαβε χώρα η υπό μελέτη διαδικασία και ορισμένες ή

άλλες αριθμητικές τιμές. Επομένως, τέτοιες λεπτομέρειες ονομάζονται χαρακτηριστικά.

Οι τιμές χαρακτηριστικών είναι ακολουθίες χαρακτήρων (γράμματα, αριθμοί, διάφοροι χαρακτήρες και ειδικοί προσδιορισμοί), που ονομάζονται συμβολοσειρές ή κείμενο.

Το πλήρες σύνολο όλων των πιθανών διακριτών συμβόλων ανά ζεύγη ενός δεδομένου συστήματος πληροφοριών αποτελεί το αλφάβητό του, ανάλογα με τη φύση των εργασιών που χρησιμοποιούνται τεχνικά μέσαεπεξεργασία δεδομένων και άλλους παράγοντες. Και επάνω διάφορα στάδιαεπεξεργασία και μάλιστα μέσα σε ένα υπολογιστικό σύστημαΕίναι δυνατή η χρήση διαφορετικών αλφαβήτων.

Το μέγεθος του αλφαβήτου (ο αριθμός των διαφορετικών συμβόλων που μπορεί να είναι σε ένα ψηφίο τιμής) και η σύνθεσή του (σετ) σχετίζονται άμεσα με την επίλυση των παρακάτω προβλημάτων:

κωδικοποίηση και αποκρυπτογράφηση,

συμπαγής καταγραφή των τιμών των μονάδων πληροφοριών,

αποτελεσματική αποθήκευση δεδομένων, επιτάχυνση της αναζήτησής τους, μετάδοση, εισαγωγή σε υπολογιστές,

λήψη πληροφοριών από μηχανές στην πιο βολική μορφή για κατανάλωση,

μειώνοντας το κόστος κάθε είδους επανεγγραφής.

Ως εκ τούτου, δίνεται μεγάλη σημασία στην επιλογή του αλφαβήτου.

Η χρήση πληροφοριών στον αλγόριθμο και τον προγραμματισμό, είναι πολύ μεγάλης σημασίαςεστιάζει σε έννοιες όπως το είδος και η δομή του δεδομένου.

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Η υπολογιστική διαδικασία σε έναν υπολογιστή υλοποιείται, όπως είναι γνωστό, με τη βοήθεια προγραμμάτων και δεδομένων. Το ίδιο το πρόγραμμα αναφέρεται επίσης σε δεδομένα. Επομένως, μπορούμε να πούμε ότι τα δεδομένα περιγράφουν κάθε πληροφορία με την οποία μπορεί να λειτουργήσει ένας υπολογιστής. Σε αυτή την περίπτωση, ως πληροφορία νοείται κάθε γεγονός και γνώση για αντικείμενα πραγματικό κόσμο, διαδικασίες και σχέσεις και συνδέσεις μεταξύ τους. Όλα τα δεδομένα χαρακτηρίζονται από έναν αριθμό χαρακτηριστικών (χαρακτηριστικά, λεπτομέρειες), συμπεριλαμβανομένης της αξίας.

Εκτός από το νόημα, τέτοια χαρακτηριστικά περιλαμβάνουν την έννοια του «τύπου δεδομένων». Ο τύπος ενός σημείου καθορίζεται από το σύνολο των τιμών του σημείου αναφοράς και το σύνολο των πράξεων που μπορούν να εκτελεστούν σε αυτές τις τιμές σύμφωνα με τις γνωστές τους ιδιότητες. Κατά συνέπεια, ο τύπος μιας δεδομένης τιμής καθορίζει τις πράξεις που επιτρέπονται στην αντίστοιχη τιμή.

Οι γλώσσες προγραμματισμού χρησιμοποιούν συνήθως κοινούς τύπους δεδομένων όπως ακέραιος, πραγματικός, χαρακτήρας, bit, δείκτης κ.λπ.

2. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

χαρακτηριστικό δεδομένου ότιή άλλου τύπου είναι η απλότητα οργάνωσης (έλλειψη δομής).

Μια δομή δεδομένων είναι μια συλλογή στοιχείων δεδομένων μεταξύ των οποίων υπάρχουν ορισμένες σχέσεις και τα στοιχεία δεδομένων μπορεί να είναι είτε απλά δεδομένα (βαθμοί) είτε δομές δεδομένων.

Έτσι, η δομή μπορεί να οριστεί ως εξής: S = (D, R), όπου D είναι το σύνολο των στοιχείων δεδομένων, R είναι το σύνολο των σχέσεων μεταξύ στοιχείων δεδομένων.

Όλες οι σχέσεις ενός στοιχείου δεδομένων με άλλα σχηματίζουν ένα στοιχείο σχέσης που σχετίζεται με το αντίστοιχο στοιχείο δεδομένων.

Μια γραφική αναπαράσταση μιας δομής πρέπει να αντικατοπτρίζει τα στοιχεία δεδομένων και τις συνδέσεις της (σχέσεις μεταξύ τους), επομένως είναι βολικό να απεικονίζεται η δομή ως γράφημα. Σε αυτήν την περίπτωση, οι κορυφές του γραφήματος μπορούν να ερμηνευθούν ως στοιχεία δεδομένων και οι σχέσεις μεταξύ των στοιχείων δεδομένων αντιστοιχούν σε προσανατολισμένα τόξα ή μη προσανατολισμένες ακμές (Εικ. 1).

Μια δομή δεδομένων που περιγράφεται και αναπαρίσταται με αυτόν τον τρόπο ονομάζεται αφηρημένη ή λογική, καθώς θεωρείται χωρίς να λαμβάνεται υπόψη η αναπαράστασή της στη μνήμη του υπολογιστή. Αλλά οποιαδήποτε δομή δεδομένων πρέπει να αναπαρίσταται στη μνήμη του μηχανήματος. Αυτή η δομή δεδομένων ονομάζεται φυσική δομή, δομή αποθήκευσης, εσωτερική δομήή δομή μνήμης.

Σχ. 1. Μη κατευθυνόμενο (α) και κατευθυνόμενο (β) γράφημα

Έτσι, η φυσική δομή των δεδομένων αντανακλά τον τρόπο με τον οποίο αναπαρίστανται τα δεδομένα στη μνήμη του υπολογιστή.

ΣΕ γενική περίπτωσηΥπάρχει διαφορά μεταξύ της λογικής δομής και της αντίστοιχης φυσικής δομής, ο βαθμός της οποίας εξαρτάται από την ίδια τη δομή και τα χαρακτηριστικά του φυσικού περιβάλλοντος στο οποίο πρέπει να αντανακλάται.

Για παράδειγμα, από την άποψη των γλωσσών προγραμματισμού δισδιάστατος πίνακαςείναι ένας ορθογώνιος πίνακας και στη μνήμη είναι μια γραμμική ακολουθία κελιών, καθένα από τα οποία αποθηκεύει την τιμή ενός από τα στοιχεία του πίνακα και τα στοιχεία του πίνακα ταξινομούνται κατά σειρές (ή στήλες).

Φυσικά, πρέπει να υπάρχει ένας μηχανισμός μεταξύ της λογικής και της φυσικής δομής που να επιτρέπει τη χαρτογράφηση της λογικής δομής στη φυσική δομή.

Έτσι, κάθε δομή δεδομένων μπορεί να χαρακτηριστεί από τη λογική (αφηρημένη) και τη φυσική (συγκεκριμένη) αναπαράστασή της, καθώς και από ένα σύνολο λειτουργιών σε αυτά τα δύο επίπεδα αναπαράστασης δομής (Εικ. 2).

Λειτουργίες στη λογική δομή

Λογική δομή δεδομένων

Λειτουργίες σε μια φυσική δομή

Φυσική δομή δεδομένων

Ρύζι. 2. Αντιστοίχιση μεταξύ λογικής και φυσικής αναπαράστασης της δομής δεδομένων

2.1. Ταξινόμηση δομών δεδομένων

ΣΕ Ανάλογα με την απουσία ή την παρουσία ρητά καθορισμένων συνδέσεων μεταξύ στοιχείων δεδομένων, θα πρέπει να γίνει διάκριση μεταξύ άσχετων δομών (διανύσματα, πίνακες, συμβολοσειρές, στοίβες, ουρές) και συνδεδεμένων δομών (συνδεδεμένες λίστες).

Ένα σημαντικό χαρακτηριστικό μιας δομής είναι η μεταβλητότητά της - μια αλλαγή στον αριθμό των στοιχείων ή/και στις συνδέσεις μεταξύ των στοιχείων της δομής. Η τιμή του στοιχείου δεδομένων δεν εννοείται, αφού σε αυτήν την περίπτωση αυτή η ιδιότητα θα είναι χαρακτηριστική για όλες τις δομές δεδομένων, με πιθανή εξαίρεση τις σταθερές και τα δεδομένα που είναι αποθηκευμένα στη ROM. Με βάση τη μεταβλητότητα, διακρίνονται οι στατικές, ημιστατικές και δυναμικές δομές.

Ένα σημαντικό χαρακτηριστικό μιας δομής δεδομένων είναι η τακτική φύση των στοιχείων της. Με βάση αυτό το κριτήριο, οι δομές μπορούν να χωριστούν σε γραμμικά διατεταγμένες ή γραμμικές και μη γραμμικές.

Ανάλογα με τη φύση της σχετικής διάταξης των στοιχείων στη μνήμη γραμμικές δομέςμπορούν να χωριστούν σε δομές με διαδοχική κατανομή των στοιχείων τους στη μνήμη (διανύσματα, συμβολοσειρές, πίνακες, στοίβες, ουρές) και δομές με αυθαίρετη συνδεδεμένη κατανομή στοιχείων στη μνήμη (απλά συνδεδεμένα, διπλά συνδεδεμένα, κυκλικά συνδεδεμένα, συσχετιστικές λίστες). Παραδείγματα μη γραμμικών δομών είναι λίστες πολλαπλών συνδέσεων, δενδρώδεις δομές και δομές γραφημάτων γενική εικόνα.

2.2. Οι απλούστερες στατικές δομές

ΠΡΟΣ ΤΗΝ Οι απλούστερες δομές δεδομένων περιλαμβάνουν συνήθως διανύσματα, πίνακες, εγγραφές και πίνακες. Χαρακτηρίζονται από τις ακόλουθες ιδιότητες:

σταθερότητα της δομής καθ 'όλη τη διάρκεια της ύπαρξής της ·

γειτνίαση στοιχείων και συνέχεια της περιοχής μνήμης που εκχωρείται για όλα τα στοιχεία της δομής ταυτόχρονα, απλότητα και σταθερότητα σχέσεων μεταξύ των στοιχείων

δομές που σας επιτρέπουν να εξαιρέσετε πληροφορίες σχετικά με αυτές τις σχέσεις από την περιοχή μνήμης που έχει εκχωρηθεί για τα στοιχεία της δομής και να τις αποθηκεύσετε, για παράδειγμα, σε συμπαγή μορφή σε περιγραφείς.

Λόγω αυτών των ιδιοτήτων, τα διανύσματα, οι πίνακες, οι εγγραφές και οι πίνακες θεωρούνται στατικές δομές.

2.2.1. Διάνυσμα

Ένα διάνυσμα είναι ένα πεπερασμένο διατεταγμένο σύνολο απλών δεδομένων ή βαθμωτών του ίδιου τύπου. Από γεωμετρική άποψη, ένα διάνυσμα ορίζει ένα σημείο στον πολυδιάστατο χώρο, οι συντεταγμένες του οποίου είναι οι τιμές των στοιχείων του διανύσματος.

Τα στοιχεία του διανύσματος βρίσκονται στη μόνη δυνατή σχέση μεταξύ τους - τη σχέση της άμεσης διαδοχής. Η αυστηρή ακολουθία διανυσματικών στοιχείων επιτρέπει

αριθμήστε τα με διαδοχικούς ακέραιους αριθμούς - δείκτες. Η λογική δομή ενός διανύσματος περιγράφεται πλήρως από τον αριθμό και τον τύπο των στοιχείων του. Για παράδειγμα, ο πίνακας int είναι ένας ακέραιος πίνακας που αποτελείται από 10 στοιχεία.

Η πιο σημαντική λειτουργία σε ένα διάνυσμα είναι η πρόσβαση στα στοιχεία του. Μόλις γίνει πρόσβαση σε ένα στοιχείο, μπορεί να εκτελεστεί σε αυτό οποιαδήποτε λειτουργία έχει νόημα για τον επιλεγμένο τύπο δεδομένων.

Σε λογικό επίπεδο, για να αποκτήσετε πρόσβαση σε ένα στοιχείο ενός διανύσματος, αρκεί να καθορίσετε το όνομα του διανύσματος και την τιμή του δείκτη του αντίστοιχου στοιχείου. Για παράδειγμα: πίνακας + πίνακας.

Η φυσική δομή ενός διανύσματος είναι μια ακολουθία τμημάτων μνήμης ίσου μήκους, που ονομάζονται πεδία ή υποδοχές, καθένα από τα οποία έχει σχεδιαστεί για να αποθηκεύει ένα στοιχείο του διανύσματος. Το πεδίο μπορεί να έχει το μέγεθος του ελάχιστου διευθυνσιοδοτήσιμου κελιού μνήμης ή να αντιστοιχεί σε μια ολόκληρη ομάδα διαδοχικών κελιών μνήμης.

Συχνά μια φυσική δομή σχετίζεται με έναν περιγραφέα ή μια κεφαλίδα που περιέχει πληροφορίες σχετικά με τη φυσική δομή. Ο περιγραφέας είναι απαραίτητος, για παράδειγμα, στην περίπτωση που οι οριακές διαστάσεις του διανύσματος γίνονται γνωστές μόνο στο στάδιο της εκτέλεσης του προγράμματος.

Ο περιγραφέας αποθηκεύεται επίσης στη μνήμη της μηχανής και είναι μια δομή που ονομάζεται εγγραφή. Για ένα διάνυσμα, ο περιγραφέας συνήθως αποθηκεύει το όνομά του, το μέγεθος, τις τιμές του οριακού δείκτη, τον τύπο στοιχείου, το μέγεθος πεδίου ή θυρίδας και τη διεύθυνση του πρώτου στοιχείου του διανύσματος (το πεδίο που αποθηκεύει αυτό το στοιχείο).

2.2.2. Πίνακας

Ένας πίνακας είναι ένα διάνυσμα όπου κάθε στοιχείο είναι ένα διάνυσμα. Με τη σειρά τους, τα στοιχεία ενός διανύσματος που είναι στοιχείο ενός πίνακα μπορούν επίσης να είναι διανύσματα. Η διαδικασία μετακίνησης από στοιχείο σε στοιχείο αυτού του στοιχείου, και ούτω καθεξής, αργά ή γρήγορα πρέπει να τελειώσει με ένα βαθμωτό στοιχείο κάποιου τύπου δεδομένων και όλα τα βαθμωτά στοιχεία του πίνακα πρέπει να αντιστοιχούν σε αυτόν τον τύπο (Εικ. 3).

Ρύζι. 3. Προβολή πολυδιάστατος πίνακας

Το σχήμα 3 δείχνει την εμφάνιση ενός πολυδιάστατου πίνακα: κάθε κόμβος πλέγματος περιέχει ένα στοιχείο πίνακα. Έτσι, η διάστασή του είναι (3,3,2).

Όπως συμβαίνει με ένα διάνυσμα, η πιο σημαντική στοιχειώδης λειτουργία για έναν πίνακα είναι η πρόσβαση στο στοιχείο του. Σε επίπεδο λογικής δομής, πραγματοποιείται χρησιμοποιώντας το όνομα του πίνακα και ένα διατεταγμένο σύνολο δεικτών που προσδιορίζουν μοναδικά ένα στοιχείο πίνακα. Για παράδειγμα: πίνακας[i][j].

Σε αντίθεση με ένα διάνυσμα, για έναν γενικό πίνακα, η μετατροπή μιας λογικής δομής σε φυσική έχει περισσότερα σύνθετη εμφάνιση. Αυτός ο μετασχηματισμός πραγματοποιείται μέσω μιας διαδικασίας γραμμικοποίησης στην οποία η πολυδιάστατη λογική δομήο πίνακας αντιστοιχίζεται σε μια μονοδιάστατη φυσική δομή. Αυτή η φυσική δομή είναι μια γραμμικά διατεταγμένη ακολουθία στοιχείων πίνακα. Έτσι, η φυσική δομή ενός πολυδιάστατου πίνακα είναι παρόμοια με τη φυσική δομή ενός διανύσματος.

Παρόλα αυτά, ο περιγραφέας για έναν πολυδιάστατο πίνακα είναι διαφορετικός από τον περιγραφέα ενός διανύσματος. Για παράδειγμα, θα πρέπει να αποθηκεύει πληροφορίες σχετικά με το μέγεθος του πίνακα και τη μέθοδο ταξινόμησης των στοιχείων (κατά γραμμές ή στήλες).

2.2.3. Ρεκόρ

Μια εγγραφή είναι ένα πεπερασμένο διατεταγμένο σύνολο στοιχείων, που γενικά περιέχει δεδομένα διαφόρων τύπων.

Τα στοιχεία μιας εγγραφής ονομάζονται συχνά πεδία. Μια εγγραφή είναι μια γενικευμένη έννοια ενός διανύσματος που δεν απαιτεί ομοιομορφία ή

Εξετάσεις Πληροφορικής

Η πληροφορία ως πηγή. Μέθοδοι αποθήκευσης και επεξεργασίας πληροφοριών.

Πληροφορίες από Lat. «Πληροφορία» σημαίνει διευκρίνιση, ευαισθητοποίηση, παρουσίαση.

ΣΕ με μια ευρεία έννοια πληροφορίες -Αυτή είναι μια γενική επιστημονική έννοια που περιλαμβάνει την ανταλλαγή πληροφοριών μεταξύ ανθρώπων, την ανταλλαγή σημάτων μεταξύ ζωντανής και άψυχης φύσης, ανθρώπων και συσκευών.
Πληροφορίες –πρόκειται για πληροφορίες για αντικείμενα και φαινόμενα περιβάλλον, τις παραμέτρους, τις ιδιότητες και την κατάστασή τους, που μειώνουν τον βαθμό αβεβαιότητας και την ελλιπή γνώση για αυτά.

Η επιστήμη των υπολογιστών εξετάζει τις πληροφορίεςως εννοιολογικά αλληλένδετες πληροφορίες, δεδομένα, έννοιες που αλλάζουν τις ιδέες μας για ένα φαινόμενο ή αντικείμενο στον περιβάλλοντα κόσμο.

Πηγές πληροφοριώνΑυτό μεμονωμένα έγγραφακαι ξεχωριστές συστοιχίες εγγράφων, εγγράφων και συστοιχιών εγγράφων πληροφοριακά συστήματα(βιβλιοθήκες, αρχεία, ταμεία, τράπεζες).
Για να χρησιμοποιηθούν πληροφορίες, και επανειλημμένα, πρέπει να αποθηκευτούν.

Αποθήκευση δεδομένων -είναι ένας τρόπος διάδοσης πληροφοριών στο χώρο και στο χρόνο. Ο τρόπος αποθήκευσης της πληροφορίας εξαρτάται από το μέσο της (βιβλίο – βιβλιοθήκη, ζωγραφική – μουσείο, φωτογραφία – λεύκωμα). Ο υπολογιστής έχει σχεδιαστεί για συμπαγή αποθήκευση πληροφοριών με τη δυνατότητα γρήγορη πρόσβασηΣε αυτή.
Επεξεργασία δεδομένωνείναι η μετατροπή της πληροφορίας από τον ένα τύπο στον άλλο.
Επεξεργασία πληροφοριών - η ίδια η διαδικασία μετάβασης από τα αρχικά δεδομένα στο αποτέλεσμα είναι η διαδικασία επεξεργασίας. Το αντικείμενο ή το υποκείμενο που πραγματοποιεί την επεξεργασία είναι ο εκτελεστής της επεξεργασίας.
1ος τύπος επεξεργασίας:επεξεργασία που σχετίζεται με τη λήψη ΝΕΑ ΠΛΗΡΟΦΟΡΙΑ, νέο περιεχόμενο γνώσης.
2ος τύπος επεξεργασίας:επεξεργασία που σχετίζεται με μια αλλαγή στη μορφή, αλλά όχι αλλαγή του περιεχομένου (για παράδειγμα,
μετάφραση κειμένου από τη μια γλώσσα στην άλλη).

Σημαντική άποψηεπεξεργασία - κωδικοποίηση– μετατροπή της πληροφορίας σε συμβολική μορφή,
βολικό για την αποθήκευση, τη μεταφορά, την επεξεργασία του. Ένας άλλος τύπος επεξεργασίας πληροφοριών είναι η δόμηση δεδομένων (εισαγωγή μιας συγκεκριμένης σειράς στην αποθήκευση πληροφοριών, ταξινόμηση, καταλογογράφηση δεδομένων).
Ένας άλλος τύπος επεξεργασίας πληροφοριών είναι η αναζήτηση σε κάποια αποθήκευση πληροφοριών για τα απαραίτητα δεδομένα που ικανοποιούν ορισμένες συνθήκες αναζήτησης (ερώτημα).



Η έννοια των δομημένων δεδομένων. Ορισμός και σκοπός μιας βάσης δεδομένων.

Κατά τη δημιουργία μιας βάσης δεδομένων, ο χρήστης προσπαθεί να οργανώσει τις πληροφορίες σύμφωνα με διάφορα χαρακτηριστικά και να ανακτήσει γρήγορα ένα δείγμα με έναν αυθαίρετο συνδυασμό χαρακτηριστικών. Αυτό μπορεί να γίνει μόνο εάν τα δεδομένα είναι δομημένα.

Δομή -είναι η εισαγωγή συμβάσεων σχετικά με τον τρόπο παρουσίασης των δεδομένων.

Δομημένα δεδομένα -αυτό είναι διατεταγμένα δεδομένα.

Μη δομημένα δεδομένα –αυτά είναι δεδομένα που καταγράφονται, για παράδειγμα, αρχείο κειμένου: Προσωπικός φάκελος No. 1 Sidorov Oleg Ivanovich, ημερομηνία γέννησης. 14/11/92, Προσωπικός φάκελος Νο. 2 Petrova Anna Viktorovna, ημερομηνία γέννησης. 15/03/91.

Για την αυτοματοποίηση της αναζήτησης και τη συστηματοποίηση αυτών των δεδομένων, είναι απαραίτητο να αναπτυχθούν ορισμένες συμφωνίες σχετικά με τον τρόπο παροχής δεδομένων, π.χ. Ημερομηνια γεννησης πρέπει να γράφεται με τον ίδιο τρόπο για κάθε μαθητή, πρέπει να έχει το ίδιο μήκος και ορισμό. τοποθετήστε ανάμεσα στις υπόλοιπες πληροφορίες. Οι ίδιες παρατηρήσεις ισχύουν και για τα υπόλοιπα δεδομένα (αριθμός προσωπικού αρχείου, F., I., O.) Αφού πραγματοποιηθεί μια απλή δόμηση των πληροφοριών, θα μοιάζει με αυτό:

Παράδειγμα δομημένων δεδομένων:Αρ. Πλήρες όνομα Ημερομηνία γέννησης

1 Sidorov Oleg Ivanovich 14/11/92

Στοιχεία δομημένων δεδομένων:

1) Το Α – πεδίο (στήλη) – είναι μια στοιχειώδης αδιαίρετη μονάδα οργάνωσης πληροφοριών

2) B – η εγγραφή (γραμμή) είναι μια συλλογή από λογικά σχετιζόμενα πεδία

3) B – ο πίνακας (αρχείο) είναι μια συλλογή από στιγμιότυπα εγγραφών της ίδιας δομής.

Βάση δεδομένων -Πρόκειται για ένα σύνολο διασυνδεδεμένων δομημένων δεδομένων οργανωμένων σε μέσα υπολογιστή, που περιέχουν πληροφορίες για διάφορες οντότητες μιας συγκεκριμένης θεματικής περιοχής (αντικείμενα, διαδικασίες, γεγονότα, φαινόμενα).

Με την ευρεία έννοια της λέξης, μια βάση δεδομένων είναι μια συλλογή πληροφοριών για συγκεκριμένα αντικείμενα του πραγματικού κόσμου σε οποιαδήποτε θεματική περιοχή.

Κάτω από θεματική ενότητα νοείται ως μέρος του πραγματικού κόσμου που υπόκειται σε μελέτη για οργάνωση διαχείρισης, αυτοματισμού, για παράδειγμα, μιας επιχείρησης, ενός πανεπιστημίου κ.λπ.

Σκοπός βάσης δεδομένων:

1) Έλεγχος πλεονασμού δεδομένων. Όπως ήδη αναφέρθηκε, τα παραδοσιακά συστήματα αρχείων σπαταλούν εξωτερική μνήμη, αποθηκεύοντας τα ίδια δεδομένα σε πολλά αρχεία. Αντίθετα, η χρήση μιας βάσης δεδομένων προσπαθεί να εξαλείψει τον πλεονασμό δεδομένων ενσωματώνοντας αρχεία για να αποφευχθεί η αποθήκευση πολλαπλών αντιγράφων της ίδιας πληροφορίας.

2) Συνέπεια δεδομένων. Η εξάλειψη ή ο έλεγχος του πλεονασμού δεδομένων μειώνει τον κίνδυνο ασυνεπών συνθηκών. Εάν ένα στοιχείο δεδομένων αποθηκεύεται στη βάση δεδομένων μόνο σε μία περίπτωση, τότε η αλλαγή της τιμής του θα απαιτήσει μόνο μία λειτουργία ενημέρωσης και η νέα τιμή θα είναι άμεσα διαθέσιμη σε όλους τους χρήστες της βάσης δεδομένων. Και εάν αυτό το στοιχείο δεδομένων, με τη γνώση του συστήματος, αποθηκεύεται στη βάση δεδομένων σε πολλά αντίγραφα, τότε ένα τέτοιο σύστημα θα μπορεί να διασφαλίσει ότι τα αντίγραφα δεν έρχονται σε αντίθεση μεταξύ τους.

3) Κοινή χρήση δεδομένων. Τα αρχεία ανήκουν συνήθως σε άτομα ή ολόκληρα τμήματα που τα χρησιμοποιούν στην εργασία τους. Ταυτόχρονα, η βάση δεδομένων ανήκει σε ολόκληρο τον οργανισμό και μπορεί να κοινοποιηθεί σε όλους τους εγγεγραμμένους χρήστες. Με τέτοια οργάνωση δουλειάς μεγάλη ποσότηταΟι χρήστες μπορούν να εργαστούν με μεγάλο όγκο δεδομένων. Επιπλέον, είναι δυνατή η δημιουργία νέων εφαρμογών με βάση πληροφορίες που υπάρχουν ήδη στη βάση δεδομένων και να προστεθούν σε αυτήν μόνο τα δεδομένα που βρίσκονται σε επί του παρόντοςδεν έχει ακόμη αποθηκευτεί σε αυτό, αντί να επαναπροσδιορίσει τις απαιτήσεις για όλα τα δεδομένα που χρειάζεται η νέα εφαρμογή.

4) Διατήρηση της ακεραιότητας των δεδομένων. Η ακεραιότητα της βάσης δεδομένων σημαίνει την ορθότητα και τη συνέπεια των δεδομένων που είναι αποθηκευμένα σε αυτήν. Η ακεραιότητα συνήθως περιγράφεται χρησιμοποιώντας περιορισμούς, π.χ. κανόνες για τη διατήρηση της συνέπειας που δεν πρέπει να παραβιάζονται στη βάση δεδομένων. Οι περιορισμοί μπορούν να εφαρμοστούν σε στοιχεία δεδομένων μέσα σε μία μόνο εγγραφή ή σε σχέσεις μεταξύ εγγραφών. Για παράδειγμα, ένας περιορισμός ακεραιότητας μπορεί να αναφέρει ότι ο μισθός ενός υπαλλήλου δεν πρέπει να υπερβαίνει τα 40.000 ρούβλια ετησίως ή ότι στο αρχείο δεδομένων ενός υπαλλήλου, ο αριθμός του τμήματος στο οποίο εργάζεται πρέπει να αντιστοιχεί σε ένα πραγματικό τμήμα της εταιρείας.

5) Αυξημένη ασφάλεια. Η ασφάλεια της βάσης δεδομένων αφορά την προστασία της βάσης δεδομένων από μη εξουσιοδοτημένη πρόσβαση από χρήστες. Χωρίς τα κατάλληλα μέτρα ασφαλείας, τα ενσωματωμένα δεδομένα γίνονται πιο ευάλωτα από τα δεδομένα σύστημα αρχείων. Ωστόσο, η ενοποίηση σάς επιτρέπει να προσδιορίσετε το απαιτούμενο σύστημα ασφαλείας βάσης δεδομένων και το DBMS για την εφαρμογή του. Το σύστημα ασφαλείας μπορεί να εκφραστεί με τη μορφή ονομάτων σύνδεσης και κωδικών πρόσβασης για την αναγνώριση των χρηστών που είναι εγγεγραμμένοι σε αυτήν τη βάση δεδομένων. Η πρόσβαση στα δεδομένα από έναν εγγεγραμμένο χρήστη μπορεί να περιοριστεί μόνο σε ορισμένες λειτουργίες (εξαγωγή, εισαγωγή, ενημέρωση και διαγραφή).

  • Μετάφραση

Η Ekaterina Malakhova, ανεξάρτητη συντάκτρια, προσάρμοσε ένα άρθρο του Beau Carnes σχετικά με τους κύριους τύπους δομών δεδομένων ειδικά για το ιστολόγιο Netology.

«Οι κακοί προγραμματιστές σκέφτονται τον κώδικα. Καλοί προγραμματιστέςσκεφτείτε τις δομές δεδομένων και τις σχέσεις τους», ο Linus Torvalds, δημιουργός του Linux.

Οι δομές δεδομένων παίζουν σημαντικό ρόλο στη διαδικασία ανάπτυξης λογισμικού και είναι επίσης συχνές ερωτήσεις στις συνεντεύξεις προγραμματιστών. Καλα ΝΕΑείναι ότι, στην ουσία, είναι απλώς ειδικές μορφές για την οργάνωση και την αποθήκευση δεδομένων.

Σε αυτό το άρθρο, θα σας δείξω τις 10 πιο κοινές δομές δεδομένων. Για καθένα από αυτά παρέχονται βίντεο και παραδείγματα εφαρμογής τους σε JavaScript. Για να σας βοηθήσω να εξασκηθείτε, έχω συμπεριλάβει επίσης μερικές ασκήσεις από την έκδοση beta του νέου προγράμματος σπουδών freeCodeCamp.

Στο άρθρο δίνω παραδείγματα εφαρμογής αυτών των δομών δεδομένων σε JavaScript: θα σας φανούν επίσης χρήσιμες εάν χρησιμοποιείτε μια γλώσσα χαμηλού επιπέδου όπως η C. Σε πολλές γλώσσες υψηλού επιπέδου, συμπεριλαμβανομένου του JavaScript, έχουν ήδη ενσωματωμένες υλοποιήσεις των περισσότερων από τις δομές δεδομένων που θα συζητήσουμε. Ωστόσο, τέτοιες γνώσεις θα είναι ένα σοβαρό πλεονέκτημα στην αναζήτηση εργασίας σας και θα είναι χρήσιμες όταν γράφετε κώδικα υψηλής απόδοσης.

Συνδεδεμένες λίστες

Μια συνδεδεμένη λίστα είναι μια από τις βασικές δομές δεδομένων. Συχνά συγκρίνεται με έναν πίνακα, καθώς πολλές άλλες δομές μπορούν να υλοποιηθούν χρησιμοποιώντας είτε έναν πίνακα είτε μια συνδεδεμένη λίστα. Αυτοί οι δύο τύποι έχουν πλεονεκτήματα και μειονεκτήματα.

Έτσι λειτουργεί μια συνδεδεμένη λίστα

Μια συνδεδεμένη λίστα αποτελείται από μια ομάδα κόμβων που μαζί σχηματίζουν μια ακολουθία. Κάθε κόμβος περιέχει δύο πράγματα: τα πραγματικά δεδομένα που αποθηκεύει (αυτά μπορεί να είναι οποιοσδήποτε τύπος δεδομένων) και έναν δείκτη (ή σύνδεσμο) προς τον επόμενο κόμβο της ακολουθίας. Υπάρχουν επίσης λίστες διπλά συνδεδεμένες: σε αυτές, κάθε κόμβος έχει έναν δείκτη τόσο στο επόμενο όσο και στο προηγούμενο στοιχείο της λίστας.

Οι βασικές λειτουργίες σε μια συνδεδεμένη λίστα περιλαμβάνουν την προσθήκη, τη διαγραφή και την αναζήτηση ενός στοιχείου στη λίστα.

Χρονική πολυπλοκότητα μιας συνδεδεμένης λίστας ═════════ ╗ ║ Αλγόριθμος ║Μέσος ║ Χειρότερη περίπτωση ║ ╠═══════════════ ════════ ════ ╬═════════ ══════╣ ║ Διάστημα ║ O(n) ║ O(n) ║ ║ (Αναζήτηση) ║ ║ ║ O(1) ║ O(1) ║ ║ Διαγραφή ║ O (1) ║ O(1) ║ ╚═══════════╩═════════════ ═ ═══╩════ ══════ ═════╝

Ασκήσεις από το freeCodeCamp

Στοίβες

Η στοίβα είναι βασική δομήδεδομένα, τα οποία σας επιτρέπουν να προσθέσετε ή να αφαιρέσετε στοιχεία μόνο στην αρχή τους. Είναι σαν μια στοίβα βιβλία: αν θέλετε να δείτε το βιβλίο στη μέση της στοίβας, πρέπει πρώτα να αφαιρέσετε αυτά που βρίσκονται από πάνω.

Η στοίβα είναι οργανωμένη σύμφωνα με την αρχή LIFO (Last In First Out). Αυτό σημαίνει ότι το τελευταίο στοιχείο που θα προσθέσετε στη στοίβα θα είναι το πρώτο που θα ξεκολλήσει.


Έτσι λειτουργεί η στοίβα

Οι στοίβες μπορούν να εκτελέσουν τρεις λειτουργίες: την προσθήκη ενός στοιχείου (ώθηση), την αφαίρεση ενός στοιχείου (pop) και την εμφάνιση των περιεχομένων της στοίβας (pip).

Πολυπλοκότητα χρόνου στοίβας ════════╗ ║ Αλγόριθμος ║Μέση τιμή ║ Χειρότερη περίπτωση ║ ╠════════════════ ═════════ ═ ╬══════════ ═════╣ ║ Κενό ║ O(n) ║ O(n) ║ ║ Αναζήτηση ║ ║ O(n) ) ║ O(1) ║ ║ Διαγραφή ║ O( 1) ║ O(1) ║ ╚═══════════╩════ ═══ ╩════ ═══════ ════╝

Ασκήσεις από το freeCodeCamp

Ουρές

Αυτή η δομή μπορεί να θεωρηθεί ως γραμμή σε ένα παντοπωλείο. Αυτός που ήρθε στην αρχή εξυπηρετείται πρώτος - όπως στη ζωή.


Έτσι λειτουργεί η ουρά

Η ουρά είναι οργανωμένη σύμφωνα με την αρχή FIFO (First In First Out). Αυτό σημαίνει ότι μπορείτε να διαγράψετε ένα στοιχείο μόνο αφού αφαιρεθούν όλα τα στοιχεία που είχαν προστεθεί προηγουμένως.

Μια ουρά σάς επιτρέπει να εκτελέσετε δύο βασικές λειτουργίες: προσθήκη στοιχείων στο τέλος της ουράς ( ουρά) και αφαιρέστε το πρώτο στοιχείο ( dequeue).

Πολυπλοκότητα χρόνου ουράς ════════╗ ║ Αλγόριθμος ║Μέση τιμή ║ χειρότερη περίπτωση ║ ╠════════════ ═════════ ═ ╬══════════ ═════╣ ║ Κενό ║ O(n) ║ O(n) ║ ║ Αναζήτηση ║ ║ O(n) ) ║ O(1) ║ ║ Διαγραφή ║ O( 1) ║ O(1) ║ ╚═══════════╩════ ═══ ╩════ ═══════ ════╝

Ασκήσεις από το freeCodeCamp

Σκηνικά



Έτσι μοιάζουν πολλά

Ένα σύνολο αποθηκεύει τιμές δεδομένων με καμία συγκεκριμένη σειρά χωρίς να τις επαναλαμβάνει. Σας επιτρέπει όχι μόνο να προσθέτετε και να αφαιρείτε στοιχεία: υπάρχουν πολλά άλλα σημαντικές λειτουργίες, το οποίο μπορεί να εφαρμοστεί σε δύο σετ ταυτόχρονα.

  • Μια ένωση συνδυάζει όλα τα στοιχεία από δύο διαφορετικά σύνολα σε ένα (χωρίς διπλότυπα).
  • Η τομή αναλύει δύο σύνολα και δημιουργεί ένα άλλο από εκείνα τα στοιχεία που υπάρχουν και στα δύο αρχικά σύνολα.
  • Το Difference εμφανίζει μια λίστα στοιχείων που βρίσκονται σε ένα σύνολο αλλά όχι σε ένα άλλο.
  • Ζητήματα υποσυνόλου δυαδική τιμή, το οποίο δείχνει αν ένα σύνολο περιλαμβάνει όλα τα στοιχεία ενός άλλου συνόλου.
Παράδειγμα υλοποίησης σε JavaScript

Ασκήσεις από το freeCodeCamp

Χάρτης

Ο Χάρτης είναι μια δομή που αποθηκεύει δεδομένα σε ζεύγη κλειδιών/τιμών, όπου κάθε κλειδί είναι μοναδικό. Μερικές φορές ονομάζεται επίσης συσχετικός πίνακαςή ένα λεξικό. Ο χάρτης χρησιμοποιείται συχνά για γρήγορη εύρεση δεδομένων. Σας επιτρέπει να κάνετε τα ακόλουθα πράγματα:
  • προσθέστε ζεύγη στη συλλογή.
  • αφαιρέστε τα ζεύγη από τη συλλογή.
  • αλλαγή ενός υπάρχοντος ζεύγους.
  • αναζητήστε μια τιμή που σχετίζεται με ένα συγκεκριμένο κλειδί.

Έτσι λειτουργεί η δομή του χάρτη

Ασκήσεις από το freeCodeCamp

Πίνακες κατακερματισμού

Έτσι λειτουργεί ένας πίνακας κατακερματισμού και μια συνάρτηση κατακερματισμού

Ένας πίνακας κατακερματισμού είναι μια δομή που μοιάζει με χάρτη που περιέχει ζεύγη κλειδιών/τιμών. Χρησιμοποιεί μια συνάρτηση κατακερματισμού για να υπολογίσει ένα ευρετήριο σε μια σειρά μπλοκ δεδομένων για να βρει την επιθυμητή τιμή.

Συνήθως μια συνάρτηση κατακερματισμού παίρνει μια συμβολοσειρά χαρακτήρων ως είσοδο και έξοδο αριθμητική αξία. Για την ίδια είσοδο, η συνάρτηση κατακερματισμού θα πρέπει να επιστρέψει τον ίδιο αριθμό. Εάν δύο διαφορετικές είσοδοι κατακερματιστούν στο ίδιο αποτέλεσμα, προκύπτει σύγκρουση. Στόχος είναι να υπάρχουν όσο το δυνατόν λιγότερες τέτοιες περιπτώσεις.

Έτσι, όταν εισάγετε ένα ζεύγος κλειδιών/τιμών σε έναν πίνακα κατακερματισμού, το κλειδί περνά από τη συνάρτηση κατακερματισμού και μετατρέπεται σε αριθμό. Αυτός ο αριθμός χρησιμοποιείται στη συνέχεια ως το πραγματικό κλειδί, το οποίο αντιστοιχεί μια ορισμένη τιμή. Όταν εισάγετε ξανά το ίδιο κλειδί, η συνάρτηση κατακερματισμού θα το επεξεργαστεί και θα επιστρέψει το ίδιο αριθμητικό αποτέλεσμα. Αυτό το αποτέλεσμα θα χρησιμοποιηθεί στη συνέχεια για την εύρεση της σχετικής τιμής. Αυτή η προσέγγιση μειώνει σημαντικά τον μέσο χρόνο αναζήτησης.

Χρονική πολυπλοκότητα ενός πίνακα κατακερματισμού ═════════ ═╗ ║ Αλγόριθμος ║μέσος όρος ║ χειρότερη περίπτωση ║ ╠═══════════ ════════ ════ ═╬════════ ═══════╣ ║ Διάστημα ║ O(n) ║ O(n) ║ O(n) ║ ║ ║ O(n) ║ ║ ║ ║ Εισαγωγή ║ O(1) ║ O(n) ║ ║ Διαγραφή ║ O(1) ║ O(n) ║ ╚═══════════╩════════════ ═ ════╩════ ═════ ══════╝

Ασκήσεις από το freeCodeCamp

Δυαδικό δέντρο αναζήτησης


Δυαδικό δέντρο αναζήτησης

Ένα δέντρο είναι μια δομή δεδομένων που αποτελείται από κόμβους. Έχει τις εξής ιδιότητες:

  • Κάθε δέντρο έχει έναν κόμβο ρίζας (κορυφή).
  • Ένας ριζικός κόμβος έχει μηδέν ή περισσότερους θυγατρικούς κόμβους.
  • Κάθε θυγατρικός κόμβος έχει μηδέν ή περισσότερους θυγατρικούς κόμβους και ούτω καθεξής.
U δυαδικό δέντροΗ αναζήτηση έχει δύο επιπλέον ιδιότητες:
  • Κάθε κόμβος έχει έως δύο θυγατρικούς κόμβους (απόγονους).
  • Κάθε κόμβος είναι μικρότερος από τα παιδιά του στα δεξιά και τα παιδιά του στα αριστερά είναι μικρότερα από τον εαυτό του.
Τα δυαδικά δέντρα αναζήτησης σάς επιτρέπουν να βρίσκετε, να προσθέτετε και να αφαιρείτε γρήγορα στοιχεία. Είναι σχεδιασμένα έτσι ώστε ο χρόνος κάθε λειτουργίας να είναι ανάλογος με τον λογάριθμο του συνολικού αριθμού των στοιχείων στο δέντρο.

Χρονική πολυπλοκότητα ενός δέντρου δυαδικής αναζήτησης ════════ ╗ ║ Αλγόριθμος ║Μέση τιμή ║Χειρότερη περίπτωση ║ ╠══════════════ ═══════ ═════ ╬═════════ ═════╣ ║ Διάστημα ║ O(n) ║ O(n) ║ ║ (αναζήτηση) ║ ║ Εισαγωγή ║ o (log n) ║ o (n) ║ ║ Διαγραφή ║ o (log n) ║ o (n) ║ ╚═══════════╩═══════════ ╚═══════════╩═══════════ ╚═══════════╩═══════════ ╚═══════════╩═══════════ ╚═══════════╩═══════════ ╚═══════════╩═══════════ ══════╩════ ════ ══════╝


Ασκήσεις από το freeCodeCamp

Πρόθεμα δέντρο

Ένα δέντρο προθέματος (φορτωμένο) είναι ένας τύπος δέντρου αναζήτησης. Αποθηκεύει δεδομένα σε ετικέτες, καθεμία από τις οποίες αντιπροσωπεύει έναν κόμβο στο δέντρο. Τέτοιες δομές χρησιμοποιούνται συχνά για την αποθήκευση λέξεων και την εκτέλεση γρήγορη αναζήτησησε αυτά - για παράδειγμα, για τη λειτουργία αυτόματης συμπλήρωσης.

Έτσι λειτουργεί το δέντρο του προθέματος

Κάθε κόμβος στο δέντρο του προθέματος γλώσσας περιέχει ένα γράμμα της λέξης. Για να σχηματίσετε μια λέξη, πρέπει να ακολουθήσετε τα κλαδιά του δέντρου, περνώντας ένα γράμμα τη φορά. Το δέντρο αρχίζει να διακλαδίζεται όταν η σειρά των γραμμάτων διαφέρει από άλλες λέξεις σε αυτό ή όταν τελειώνει η λέξη. Κάθε κόμβος περιέχει ένα γράμμα (δεδομένα) και μια Boolean τιμή που δείχνει αν είναι ο τελευταίος στη λέξη.

Κοιτάξτε την εικόνα και προσπαθήστε να σχηματίσετε τις λέξεις. Ξεκινάτε πάντα με τον ριζικό κόμβο στην κορυφή και πηγαίνετε προς τα κάτω. Αυτό το δέντρο περιέχει τις ακόλουθες λέξεις: μπάλα, ρόπαλο, κούκλα, κάνω, κούκλα, κοιτώνα, αποστολή, αίσθηση.

Ασκήσεις από το freeCodeCamp

Δυαδικός σωρός

Ο δυαδικός σωρός είναι μια άλλη δομή δεδομένων που βασίζεται σε δέντρα. Κάθε κόμβος σε αυτό δεν έχει περισσότερα από δύο παιδιά. Είναι επίσης ένα τέλειο δέντρο: αυτό σημαίνει ότι όλα τα επίπεδα σε αυτό είναι πλήρως γεμάτα με δεδομένα και το τελευταίο συμπληρώνεται από αριστερά προς τα δεξιά.


Έτσι λειτουργούν οι ελάχιστοι και μέγιστοι σωροί

Ένας δυαδικός σωρός μπορεί να είναι είτε ελάχιστος είτε μέγιστος. Σε ένα μέγιστο σωρό, το κλειδί οποιουδήποτε κόμβου είναι πάντα μεγαλύτερο ή ίσο με τα κλειδιά των απογόνων του. Σε έναν ελάχιστο σωρό, όλα λειτουργούν αντίστροφα: το κλειδί οποιουδήποτε κόμβου είναι μικρότερο ή ίσο με τα κλειδιά των απογόνων του.

Η σειρά των επιπέδων σε ένα δυαδικό σωρό είναι σημαντική, σε αντίθεση με τη σειρά των κόμβων στο ίδιο επίπεδο. Η εικόνα δείχνει ότι στον ελάχιστο σωρό στο τρίτο επίπεδο οι τιμές είναι εκτός σειράς: 10, 6 και 12.


Χρονική πολυπλοκότητα του δυαδικού σωρού ═════════ ═╗ ║ Αλγόριθμος ║ Μέσος όρος ║ χειρότερη περίπτωση ║ ╠═══════════ ═════════ ═══ ══╬═══════ ════════╣ ║ Διάστημα ║ O(n) ║ O(n) ║ O(n) ║ ║ ║ O(n) ║ ║ ║ ║ Εισαγωγή ║ O(1) ║ O(log n) ║ ║ Διαγραφή ║ O(log n) ║ O(log n) ║ ║ Peek ║ O(1) ║ O(1) ║ ╚══════ ══╩══════════ ════════╩════════════

Ασκήσεις από το freeCodeCamp

Γραφική παράσταση

Τα γραφήματα είναι συλλογές κόμβων (κορυφές) και συνδέσεις μεταξύ τους (άκρες). Ονομάζονται επίσης δίκτυα.

Τα γραφήματα χωρίζονται σε δύο βασικούς τύπους: κατευθυνόμενα και μη κατευθυνόμενα. Στα μη κατευθυνόμενα γραφήματα, οι ακμές μεταξύ των κόμβων δεν έχουν κατεύθυνση, ενώ οι ακμές στα κατευθυνόμενα γραφήματα έχουν.

Τις περισσότερες φορές, ένα γράφημα απεικονίζεται με μία από τις δύο μορφές: μπορεί να είναι μια λίστα γειτνίασης ή ένας πίνακας γειτνίασης.


Γράφημα ως μήτρα γειτνίασης

Μια λίστα γειτνίασης μπορεί να θεωρηθεί ως μια λίστα στοιχείων, με έναν κόμβο στα αριστερά και όλους τους άλλους κόμβους στους οποίους συνδέεται στα δεξιά.

Ένας πίνακας γειτνίασης είναι ένα πλέγμα αριθμών όπου κάθε γραμμή ή στήλη αντιστοιχεί σε διαφορετικό κόμβο στο γράφημα. Στη διασταύρωση της γραμμής και της στήλης υπάρχει ένας αριθμός που υποδηλώνει την παρουσία σύνδεσης. Μηδενικά σημαίνει ότι λείπει. μονάδες - ότι υπάρχει σύνδεση. Για να υποδείξετε το βάρος κάθε σύνδεσης, χρησιμοποιούνται αριθμοί μεγαλύτεροι του ενός.

Υπάρχουν ειδικοί αλγόριθμοι για την προβολή ακμών και κορυφών σε γραφήματα - οι λεγόμενοι αλγόριθμοι διέλευσης. Οι κύριοι τύποι τους περιλαμβάνουν αναζήτηση κατά πλάτος ( αναζήτηση κατά πλάτος) και σε βάθος ( αναζήτηση πρώτα σε βάθος). Εναλλακτικά, μπορούν να χρησιμοποιηθούν για να προσδιοριστεί πόσο κοντά βρίσκονται ορισμένες κορυφές του γραφήματος στον ριζικό κόμβο. Το παρακάτω βίντεο δείχνει πώς να εκτελείτε μια αναζήτηση πλάτους σε JavaScript.



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: