Αιγόξηζκνη 2.2.8 Βαζηθέο αιγνξηζκηθέο ιεηηνπξγίεο ζε Γνκέο Γεδνκέλσλ (Πίλαθεο) Δηζαγσγή ζηηο Αξρέο ηεο Δπηζηήκεο ησλ Ζ/Υ 1
Ζ πην ζπλεζηζκέλε θαη απιή δνκή δεδνκέλσλ είλαη ν πίλαθας. Οη πίλαθεο ππνζηεξίδνληαη από όιεο ζρεδόλ ηηο γιώζζεο πξνγξακκαηηζκνύ. Απνηεινύληαη από έλα ζύλνιν νκνεηδώλ απιώλ ζηνηρείσλ. Τν κέγεζνο ελόο πίλαθα, δειαδή ην πιήζνο ησλ ζηνηρείσλ πνπ πεξηέρεη, ζπλήζσο είλαη ζηαζεξό θαη πξνθαζνξηζκέλν. 2
Σην κάζεκα καο κε βάζε ηηο νδεγίεο ηνπ Υπνπξγείνπ ζεσξείηαη γλσζηό δειαδή ζηαζεξό θαη πξνθαζνξηζκέλν. Οπόηε όηαλ είλαη γλσζηόο εθ ησλ πξνηέξσλ ν αξηζκόο ησλ ζηνηρείσλ πνπ ζα επεμεξγαζηεί ν αιγόξηζκνο κπνξεί λα ρξεζηκνπνηεζεί πίλαθαο. 3
Ζ αλαθνξά ζε έλα ζηνηρείν ηνπ πίλαθα γίλεηαη κε ηε ρξήζε ελόο ζπκβνιηθνύ νλόκαηνο πνπ έρεη απνδνζεί ζηνλ πίλαθα, καδί κε έλα ή πεξηζζόηεξα ζηνηρεία πνπ νλνκάδνληαη δείθηεο (indexes). Οη πίλαθεο κε έλα δείθηε ιέγνληαη κνλνδηάζηαηνη, νη πίλαθεο κε 2 δείθηεο δηζδηάζηαηνη,... νη πίλαθεο κε λ δείθηεο λ-δηάζηαηνη. 4
Θεσξνύκε ηνλ κνλνδηάζηαην πίλαθα Α (5 ζηνηρείσλ). Ο πίλαθαο Α πεξηέρεη αθέξαηνπο αξηζκνύο. Δείκτης/Θέση 1 2 3 4 5 Α 3 4 6 5 1 5
Πξηλ από θάζε επεμεξγαζία πίλαθα απαηηείηαη λα εηζαρζνύλ δεδνκέλα ζε απηόλ. Δπεηδή είλαη γλσζηό ην πιήζνο ησλ ζηνηρείσλ ηνπ πίλαθα (έζησ 100) ρξεζηκνπνηείηαη ε εληνιή Γηα από κέχρη. Παράδεηγκα 2.23. Δηζαγσγή ζηνηρείσλ ζε πίλαθα Γηα i από 1 κέχρη 100 Εκθάληζε "Γώζηε ηελ ηηκή ηνπ ", i, "ζηνπ ζηνηρείνπ" Δηάβαζε Α[i] Τέιος_επαλάιεψες 6
Ζ εθηύπσζε ησλ ζηνηρείσλ ελόο πίλαθα 100 ζηνηρείσλ, θαζώο θαη ηεο ζέζεο πνπ ππάξρεη ην θάζε ζηνηρείν, επηηπγράλεηαη κε ηηο επόκελεο εληνιέο: Παράδεηγκα 2.24. Δθηύπσζε πίλαθα Γηα i από 1 κέχρη 100 Εκθάληζε "Σηε ζέζε ", i, " ε ηηκή είλαη ", Α[i] Τέιος_επαλάιεψες 7
Μεηά ηελ εηζαγσγή δεδνκέλσλ ζε έλα πίλαθα κπνξεί λα αθνινπζήζεη ε επεμεξγαζία ηνπ. Σηε ζπλέρεηα παξνπζηάδνληαη κεξηθέο ζπλεζηζκέλεο επεμεξγαζίεο πηλάθσλ όπσο: Άζξνηζκα / Μέζνο όξνο ζηνηρείσλ πίλαθα Μέγηζην ζηνηρείν πίλαθα Σεηξηαθή αλαδήηεζε Ταμηλόκεζε Σηα επόκελα παξαδείγκαηα ζα ζεσξήζνπκε όηη έρνπλ θαηαρσξεζεί ηηκέο ζηνλ πίλαθα θαη απιά γλσζηνπνηνύληαη ζηνλ αιγόξηζκν κε ηελ εληνιή Δεδοκέλα// // 8
Παράδεηγκα 2.26. Άζξνηζκα / Μέζνο όξνο ζηνηρείσλ πίλαθα Γίδεηαη ν κνλνδηάζηαηνο πίλαθαο Β πνπ πεξηέρεη 100 βαζκνύο καζεηώλ. Να αλαπηπρζεί αιγόξηζκνο, ν νπνίνο λα ππνινγίδεη θαη λα εκθαλίδεη ην κέζν όξν βαζκνινγίαο ησλ καζεηώλ 9
Αιγόρηζκος Βαζκνινγία Δεδοκέλα // Β // Σ 0 Γηα i από 1 κέχρη 100 Σ Σ + Β[i] Τέιος_επαλάιεψες ΜΟ Σ / 100 Εκθάληζε ''Μ.Ο.:'', ΜΟ Τέιος Βαζκνινγία Με ην βξόρν Γηα i από 1 κέχρη 100 δηαηξέρνληαη όια ηα ζηνηρεία ηνπ πίλαθα θαη θάζε έλα αζξνίδεηαη ζηε κεηαβιεηή Σ, ε νπνία έρεη κεδεληζηεί πξηλ από ηελ έλαξμε ηεο επαλάιεςεο. Ο Μέζνο όξνο είλαη ην πειίθν ηνπ αζξνίζκαηνο όισλ ησλ ζηνηρείσλ δηα ηνπ πιήζνπο ησλ ζηνηρείσλ. 10
Παράδεηγκα 2.27. Μέγηζην ζηνηρείν πίλαθα Γίδεηαη ν κνλνδηάζηαηνο πίλαθαο Β πνπ πεξηέρεη 100 βαζκνύο καζεηώλ. Να αλαπηπρζεί αιγόξηζκνο, ν νπνίνο λα βξίζθεη θαη λα εκθαλίδεη ηελ πςειόηεξε βαζκνινγία. 11
Αιγόρηζκος Μέγηζην_πίλαθα Δεδοκέλα // Β // max Β[1] Γηα i από 2 κέχρη 100 Αλ Β[i] > max ηόηε max Β[i] Τέιος_αλ Τέιος_επαλάιεψες Εκθάληζε ''Μέγηζην:'', max Τέιος Μέγηζην_πίλαθα Σηε κεηαβιεηή max εθρσξείηαη ε ηηκή ηνπ πξώηνπ ζηνηρείνπ ηνπ πίλαθα. Σηε ζπλέρεηα κε ην βξόρν Γηα i από 2 κέχρη 100 εμεηάδνληαη όια ηα ππόινηπα ζηνηρεία ηνπ πίλαθα. Γηα θάζε έλα, αλ είλαη κεγαιύηεξν από ην max, ηόηε αληηθαζηζηάηαη ε ηηκή ηνπ max κε ην λέν ζηνηρείν. Γειαδή ζηε κεηαβιεηή max εθρσξείηαη ην εθάζηνηε κέγηζην ζηνηρείν, νπόηε ζην ηέινο ηεο επαλάιεςεο ζα έρεη ην κέγηζην ζηνηρείν ηνπ πίλαθα. 12
Τράπεδα Θεκάηωλ, 20638, ΘΕΜΑ Δ Δμήληα (60) καζεηέο Λπθείνπ ςήθηζαλ, κία από δύν ππνςήθηεο ηνπνζεζίεο γηα ηελ πνιπήκεξε εθδξνκή ηνπο. Οη επηινγέο 1, 2 αληίζηνηρα θαη κεδέλ (0) γηα όπνηνλ δελ ήζειε εθδξνκή έρνπλ θαηαρσξηζζεί ζε κνλνδηάζηαην πίλαθα ΔΠ. Εεηείηαη ε αλάπηπμε αιγόξηζκνπ ν νπνίνο: Γ1. Να εκθαλίδεη όιεο ηηο ηηκέο ηνπ πίλαθα. Γ2. Να εκθαλίδεη ην πιήζνο ησλ καζεηώλ πνπ δελ ήζειαλ εθδξνκή. Γ3. Να εκθαλίδεη ηελ ηνπνζεζία (1 ή 2) πνπ πξνηίκεζε ε πιεηνςεθία ησλ καζεηώλ. 13
Σην ζέκα απηό δεηείηαη λα ππνινγηζηεί πόζες θορές παξνπζηάδνληαη ηηκέο ζηνλ πίλαθα νη νπνίεο έρνπλ ζπγθεθξηκέλε ηδηόηεηα (0, 1, 2). Γηα λα ππνινγηζζεί ην πιήζνο θάζε ηηκήο απαηηείηαη λα ειεγρζνύλ ζεηξηαθά όια ηα ζηνηρεία ηνπ πίλαθα από ην πξώην κέρξη ην ηειεπηαίν. Ζ ζπγθεθξηκέλε επεμεξγαζία νλνκάδεηαη Σεηρηαθή Αλαδήηεζε θαη εθαξκόδεηαη ζε πίλαθα όηαλ αλαδεηνύληαη ζηνηρεία πνπ έρνπλ κία ζπγθεθξηκέλε ηδηόηεηα θαη κπνξεί λα παξνπζηάδνληαη ζηνλ πίλαθα πεξηζζόηεξεο από κία θνξέο. 14
Αιγόρηζκος ΘΓ Δεδοκέλα // ΔΠ // Γηα i από 1 κέχρη 60 Εκθάληζε ΔΠ[i] Τέιος_επαλάιεψες Δκθάληζε ζηνηρείσλ ηνπ πίλαθα Π0 0 Π1 0 Π2 0 Αξρηθνπνίεζε ηνπ πιήζνπο ησλ ζηνηρείσλ κε ζπγθεθξηκέλε ηδηόηεηα 15
Γηα i από 1 κέχρη 60 Αλ ΔΠ[i] = 0 ηόηε Π0 Π0 + 1 αιιηώς_αλ ΔΠ[i] = 1 ηόηε Π1 Π1 + 1 αιιηώς Π2 Π2 + 1 Τέιος_αλ Τέιος_επαλάιεψες Σεηξηαθή Αλαδήηεζε ζηα ζηνηρεία ηνπ πίλαθα κε ζθνπό λα ππνινγηζζνύλ ηα πιήζε ησλ ζηνηρείσλ κε ζπγθεθξηκέλε ηδηόηεηα 16
Εκθάληζε "Μαζεηέο πνπ δελ ζέινπλ εθδξνκή", Π0 Αλ Π1 > Π2 ηόηε Εκθάληζε "Πιεηνςήθεζε ε επηινγή 1" αιιηώς_αλ Π2 > Π1 ηόηε Εκθάληζε "Πιεηνςήθεζε ε επηινγή 2" αιιηώς Εκθάληζε "Ηζνςεθία" Τέιος_αλ Τέιος ΘΓ 17
Θα κπνξνύζε θάπνηνο λα πεη όηη όια ηα πξνεγνύκελα παξαδείγκαηα κπνξνύλ λα αληηκεησπηζηνύλ θαη ρσξίο ηε ρξήζε πίλαθα αλ πξόθεηηαη λα γίλεη είζνδνο ησλ ζηνηρείσλ από ηνλ ρξήζηε. Υπάξρνπλ όκσο πεξηπηώζεηο, όπσο ζην επόκελν παξάδεηγκα πνπ αθνινπζεί, πνπ ε ρξήζε πίλαθα επηβάιιεηαη. 18
Να γξάςεηε αιγόξηζκν ν νπνίνο: Να δηαβάδεη 100 αξηζκεηηθέο ηηκέο. Να ππνινγίδεη θαη λα εκθαλίδεη ην κέζν όξν ησλ ηηκώλ. Να εκθαλίδεη ην πιήζνο ησλ ηηκώλ πνπ είλαη κεγαιύηεξεο ηνπ κέζνπ όξνπ. 19
Σην ζπγθεθξηκέλν παξάδεηγκα δεηείηαη λα γίλεη είζνδνο ησλ ηηκώλ θαη λα ππνινγηζηεί ν κέζνο όξνο ηνπο. Σηε ζπλέρεηα όκσο δεηείηαη λα βξεζνύλ πόζα είλαη ηα ζηνηρεία κε κεγαιύηεξε ηηκή από ην κέζν όξν. Γηα ην ηξίην εξώηεκα ζα πξέπεη είηε λα γίλεη είζνδνο ησλ ηηκώλ μαλά, θάηη ην νπνίν βέβαηα δελ είλαη ινγηθό αθνύ είλαη θαη ρξνλνβόξν θαη ππάξρεη κεγάιε πηζαλόηεηα ιάζνπο, είηε νη ηηκέο αξρηθά λα έρνπλ θαηαρσξεζεί ζε πίλαθα νπόηε είλαη εύθνιε ε πξόζβαζε ζε απηέο θαη ε επεμεξγαζία ηνπο. 20
Αιγόρηζκος Παξάδεηγκα Γηα i από 1 κέχρη 100 Δηάβαζε Α[i] Τέιος_επαλάιεψες Δίζνδνο ηηκώλ θαη θαηαρώξεζε ζε πίλαθα Σ 0 Γηα i από 1 κέχρη 100 Σ Σ + Α[i] Τέιος_επαλάιεψες ΜΟ Σ / 100 Γράψε "Ο κέζνο όξνο είλαη", ΜΟ Δύξεζε κέζνπ όξνπ ζηνηρείσλ πίλαθα 21
Π 0 Γηα i από 1 κέχρη 100 Αλ Α[i] > ΜΟ ηόηε Π Π + 1 Τέιος_αλ Τέιος_επαλάιεψες Γράψε "Τηκέο κεγαιύηεξεο ηνπ κέζνπ όξνπ:", Π Τέιος Παξάδεηγκα Σεηξηαθή Αλαδήηεζε ζηνηρείσλ κε ηηκή κεγαιύηεξε ηνπ κέζνπ όξνπ θαη ππνινγηζκόο ηνπ πιήζνπο ηνπο. 22