Μετάβαση στο περιεχόμενο

Πίνακας (δομή δεδομένων): Διαφορά μεταξύ των αναθεωρήσεων

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μ r2.7.2+) (Ρομπότ: Τροποποίηση: ru:Массив
μ r2.7.3) (Ρομπότ: Αλλαγή fa:آرایه (رایانه) σε fa:آرایه (ساختمان داده‌ها); διακοσμητικές αλλαγές
Γραμμή 3: Γραμμή 3:
Η έννοια του πίνακα είναι ανάλογη με αυτή του [[διάνυσμα|διανύσματος]], ή των [[Πίνακας (μαθηματικά)|πινάκων]] στα μαθηματικά.
Η έννοια του πίνακα είναι ανάλογη με αυτή του [[διάνυσμα|διανύσματος]], ή των [[Πίνακας (μαθηματικά)|πινάκων]] στα μαθηματικά.


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


==Μονοδιάστατοι Πίνακες==
== Μονοδιάστατοι Πίνακες ==
Οι μονοδιάστατοι πίνακες αποτελούν την πιο απλή και ίσως, την πιο συχνά εφαρμοσμένη υποκατηγορία πινάκων. Το χαρακτηριστικό τους είναι ότι αρκεί ένας ακέραιος για να ορίσει τη θέση ενός στοιχείου του πίνακα. Λέμε ότι ένας μονοδιάστατος πίνακας έχει μέγεθος Ν, όταν περιέχει Ν θέσεις.
Οι μονοδιάστατοι πίνακες αποτελούν την πιο απλή και ίσως, την πιο συχνά εφαρμοσμένη υποκατηγορία πινάκων. Το χαρακτηριστικό τους είναι ότι αρκεί ένας ακέραιος για να ορίσει τη θέση ενός στοιχείου του πίνακα. Λέμε ότι ένας μονοδιάστατος πίνακας έχει μέγεθος Ν, όταν περιέχει Ν θέσεις.


[[Αρχείο:Pinakas upologistes.png | right | 250px | thumb | Ένας πίνακας 6 στοιχείων.]]
[[Αρχείο:Pinakas upologistes.png | right | 250px | thumb | Ένας πίνακας 6 στοιχείων.]]
===Παράδειγμα===
=== Παράδειγμα ===
Στην διπλανή εικόνα βλέπετε ένα παράδειγμα μονοδιάστατου πίνακα 6 θέσεων, του οποίου το πρώτο στοιχείο είναι το 4, το δεύτερο (όπως ακριβώς και το έκτο) είναι το 9, κ.ο.κ. Για να εντοπίσουμε ένα στοιχείο, αρκεί να το αναζητήσουμε με βάση τη θέση του. Παρόλο που αυτή η διαδικασία χρειάζεται σταθερό χρόνο (πολυπλοκότητα Ο(1)), η παρόμοια διαδικασία της αναζήτησης με βάση την τιμή (και όχι τη θέση) ενός στοιχείου απαιτεί γραμμικό χρόνο ως προς τον αριθμό των στοιχείων του πίνακα (πολυπλοκότητα Ο(Ν)).
Στην διπλανή εικόνα βλέπετε ένα παράδειγμα μονοδιάστατου πίνακα 6 θέσεων, του οποίου το πρώτο στοιχείο είναι το 4, το δεύτερο (όπως ακριβώς και το έκτο) είναι το 9, κ.ο.κ. Για να εντοπίσουμε ένα στοιχείο, αρκεί να το αναζητήσουμε με βάση τη θέση του. Παρόλο που αυτή η διαδικασία χρειάζεται σταθερό χρόνο (πολυπλοκότητα Ο(1)), η παρόμοια διαδικασία της αναζήτησης με βάση την τιμή (και όχι τη θέση) ενός στοιχείου απαιτεί γραμμικό χρόνο ως προς τον αριθμό των στοιχείων του πίνακα (πολυπλοκότητα Ο(Ν)).


===Αρίθμηση θέσεων πινάκων===
=== Αρίθμηση θέσεων πινάκων ===
Στον πίνακα του προηγούμενου παραδείγματος, μπορούμε να δούμε ότι ο πίνακας αριθμείται ξεκινώντας από το 0 και όχι από το 1. Οπότε, βλέπουμε "θέση 0" για το πρώτο στοιχείο του. Αυτό αποτελεί μια κοινή τακτική αρίθμησης για την πλειοψηφία των σύγχρονων γλωσσών προγραμματισμού, όπως είναι η [[Java]], [[C/C++]] κλπ. Έτσι, δοσμένου ενός πίνακα Ν θέσεων, μπορούμε να προσπελάσουμε τα στοιχεία 0 μέχρι Ν-1. Αναζήτηση του στοιχείου στη θέση Ν θα οδηγούσε σε προγραμματιστικό λάθος (κατά κανόνα) κατά την εκτέλεση.
Στον πίνακα του προηγούμενου παραδείγματος, μπορούμε να δούμε ότι ο πίνακας αριθμείται ξεκινώντας από το 0 και όχι από το 1. Οπότε, βλέπουμε "θέση 0" για το πρώτο στοιχείο του. Αυτό αποτελεί μια κοινή τακτική αρίθμησης για την πλειοψηφία των σύγχρονων γλωσσών προγραμματισμού, όπως είναι η [[Java]], [[C/C++]] κλπ. Έτσι, δοσμένου ενός πίνακα Ν θέσεων, μπορούμε να προσπελάσουμε τα στοιχεία 0 μέχρι Ν-1. Αναζήτηση του στοιχείου στη θέση Ν θα οδηγούσε σε προγραμματιστικό λάθος (κατά κανόνα) κατά την εκτέλεση.


Ταυτόχρονα, παλιότερες γλώσσες προγραμματισμού, όπως οι [[Fortran]] και [[Cobol]], οι κάποιες σύγχρονες, όπως [[Matlab]] ξεκινούν την αρίθμηση πινάκων από το 1 και συνεπώς, οι προσπελάσιμες θέσεις ενός πίνακα μεγέθους Ν είναι οι θέσεις 1 μέχρι Ν.
Ταυτόχρονα, παλιότερες γλώσσες προγραμματισμού, όπως οι [[Fortran]] και [[Cobol]], οι κάποιες σύγχρονες, όπως [[Matlab]] ξεκινούν την αρίθμηση πινάκων από το 1 και συνεπώς, οι προσπελάσιμες θέσεις ενός πίνακα μεγέθους Ν είναι οι θέσεις 1 μέχρι Ν.


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


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



[[Κατηγορία:Επιστήμη υπολογιστών]]
[[Κατηγορία:Επιστήμη υπολογιστών]]
Γραμμή 37: Γραμμή 36:
[[es:Vector (informática)]]
[[es:Vector (informática)]]
[[et:Massiiv (programmeerimine)]]
[[et:Massiiv (programmeerimine)]]
[[fa:آرایه (رایانه)]]
[[fa:آرایه (ساختمان داده‌ها)]]
[[fi:Taulukko (tietorakenne)]]
[[fi:Taulukko (tietorakenne)]]
[[fr:Tableau (structure de données)]]
[[fr:Tableau (structure de données)]]

Έκδοση από την 06:02, 27 Νοεμβρίου 2012

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

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

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

Μονοδιάστατοι Πίνακες

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

Ένας πίνακας 6 στοιχείων.

Παράδειγμα

Στην διπλανή εικόνα βλέπετε ένα παράδειγμα μονοδιάστατου πίνακα 6 θέσεων, του οποίου το πρώτο στοιχείο είναι το 4, το δεύτερο (όπως ακριβώς και το έκτο) είναι το 9, κ.ο.κ. Για να εντοπίσουμε ένα στοιχείο, αρκεί να το αναζητήσουμε με βάση τη θέση του. Παρόλο που αυτή η διαδικασία χρειάζεται σταθερό χρόνο (πολυπλοκότητα Ο(1)), η παρόμοια διαδικασία της αναζήτησης με βάση την τιμή (και όχι τη θέση) ενός στοιχείου απαιτεί γραμμικό χρόνο ως προς τον αριθμό των στοιχείων του πίνακα (πολυπλοκότητα Ο(Ν)).

Αρίθμηση θέσεων πινάκων

Στον πίνακα του προηγούμενου παραδείγματος, μπορούμε να δούμε ότι ο πίνακας αριθμείται ξεκινώντας από το 0 και όχι από το 1. Οπότε, βλέπουμε "θέση 0" για το πρώτο στοιχείο του. Αυτό αποτελεί μια κοινή τακτική αρίθμησης για την πλειοψηφία των σύγχρονων γλωσσών προγραμματισμού, όπως είναι η Java, C/C++ κλπ. Έτσι, δοσμένου ενός πίνακα Ν θέσεων, μπορούμε να προσπελάσουμε τα στοιχεία 0 μέχρι Ν-1. Αναζήτηση του στοιχείου στη θέση Ν θα οδηγούσε σε προγραμματιστικό λάθος (κατά κανόνα) κατά την εκτέλεση.

Ταυτόχρονα, παλιότερες γλώσσες προγραμματισμού, όπως οι Fortran και Cobol, οι κάποιες σύγχρονες, όπως Matlab ξεκινούν την αρίθμηση πινάκων από το 1 και συνεπώς, οι προσπελάσιμες θέσεις ενός πίνακα μεγέθους Ν είναι οι θέσεις 1 μέχρι Ν.

Πράξεις επί πινάκων

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

Πολυδιάστατοι Πίνακες

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