Καθηγητής Πληροφορικής, ΠΕ86

3.7

Ταξινόμηση
 ΣΥΖΗΤΗΣΕΙΣ ΕΝΟΤΗΤΑΣ

ΘΕΩΡΙΑ – ΠΑΡΑΔΕΙΓΜΑΤΑ

Από το σχολικό βιβλίο:

ΚΕΔ ΘΕΩΡΙΑ ΠΒ

Σημειώσεις – Διαφάνειες:

ΔΙΑΦΑΝΕΙΕΣ – (489η μέχρι 541η)

MORE…

Βιντεομαθήματα:

Ταξινόμηση Πίνακα-Φυσαλίδα – ΣΠΥΡΟΣ ΓΕΩΡΓΙΟΣ ΖΥΓΟΥΡΗΣ

Ταξινόμηση (sorting) Ασκήσεις 1 – ΣΠΥΡΟΣ ΓΕΩΡΓΙΟΣ ΖΥΓΟΥΡΗΣ

Ταξινόμηση (sorting )Ασκήσεις 2 – ΣΠΥΡΟΣ ΓΕΩΡΓΙΟΣ ΖΥΓΟΥΡΗΣ

ΕΡΩΤΗΣΕΙΣ

Από το σχολικό βιβλίο:

Από άλλο υλικό:

ΑΣΚΗΣΕΙΣ

Από το σχολικό βιβλίο:

Από άλλο υλικό:

Άσκηση 1

Να γράψετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο να διαβάζει σε έναν πίνακα Α τον τελικό βαθμό 50 μαθητών μιας τάξης και στη συνέχεια να τους ταξινομεί από τον μικρότερο στον μεγαλύτερο χρησιμοποιώντας την ταξινόμηση με επιλογή. Στη συνέχεια να εμφανίζει τους 3 καλύτερους βαθμούς.

Λύση

ΠΡΟΓΡΑΜΜΑ ΜΠ1
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ : Α[50], ΜΙΝ, Τ
ΑΚΕΡΑΙΕΣ :  i, θ, κ
ΑΡΧΗ
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 50      !ΓΕΜΙΣΜΑ ΠΙΝΑΚΑ Α
ΔΙΑΒΑΣΕ Α[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 49    !ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΕΠΙΛΟΓΗ
θ<- ι
ΜΙΝ<- Α[ι]
ΓΙΑ κ ΑΠΟ ι+1 ΜΕΧΡΙ 50
ΑΝ Α[κ]<ΜΙΝ ΤΟΤΕ
θ <- κ
ΜΙΝ <- Α[κ]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Α[θ] <- Α[ι]
Α[ι] <- ΜΙΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ ι ΑΠΟ 50 ΜΕΧΡΙ 48 ΜΕ_ΒΗΜΑ -1     !ΕΜΦΑΝΙΣΗ 3 ΤΕΛΕΥΤΑΙΩΝ ΘΕΣΕΩΝ ΤΟΥ ΠΙΝΑΚΑ (3 ΚΑΛΥΤΕΡΟΙ ΒΑΘΜΟΙ)
ΓΡΑΨΕ Α[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση 2

Να γράψετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο να διαβάζει σε έναν πίνακα Α τον τελικό βαθμό 50 μαθητών μιας τάξης και στη συνέχεια να τους ταξινομεί από τον μεγαλύτερο στον χρησιμοποιώντας την ταξινόμηση με ΕΥΘΕΙΑ ΕΙΣΑΓΩΓΗ. Στη συνέχεια να εμφανίζει τους 3 καλύτερους βαθμούς.

Λύση

ΠΡΟΓΡΑΜΜΑ ΜΠ2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: κ,λ,Α[50],τ
ΛΟΓΙΚΕΣ: οκ
ΑΡΧΗ
!ΓΕΜΙΣΜΑ ΠΙΝΑΚΑ Α
ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ Α[κ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΕΥΘΕΙΑ ΕΙΣΑΓΩΓΗ
ΓΙΑ κ ΑΠΟ 2 ΜΕΧΡΙ 50
τ<-Α[κ]
λ<-κ-1
οκ<-ΑΛΗΘΗΣ
ΟΣΟ λ>0 ΚΑΙ οκ=ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ τ<Α[λ] ΤΟΤΕ
Α[λ+1]<-Α[λ]
λ<-λ-1
οκ<-ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
οκ<-ΨΕΥΔΗΣ
 ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Α[λ+1] <- τ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!ΕΜΦΑΝΙΣΗ 3 ΚΑΛΥΤΕΡΩΝ
ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 3
 ΓΡΑΨΕ Α[κ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση 3

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

Λύση

ΠΡΟΓΡΑΜΜΑ ΜΠ3_ΕΞΥΠΝΗ_ΦΥΣΑΛΙΔΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[100], i, j, K
ΛΟΓΙΚΕΣ: Flag
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Flag ← ΑΛΗΘΗΣ
i ← 2
ΟΣΟ i <= 100 ΚΑΙ flag = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
flag ← ΨΕΥΔΗΣ
ΓΙΑ j ΑΠΟ 100 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ Α[j-1] > A[j] ΤΟΤΕ
Κ ← Α[j – 1]
Α[j-1] ← Α[j]
Α[j] ← Κ
flag ← ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i ← i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΓΡΑΨΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση 4

(ταξινόμηση ευθείας ανταλλαγής σε αύξουσα σειρά (φυσαλίδα))
Να γράψετε πρόγραμμα το οποίο να διαβάζει ένα πίνακα 100 πραγματικούς αριθμούς και να εμφανίζει τους 10 μικρότερους.

Λύση

ΠΡΟΓΡΑΜΜΑ ΜΠ4
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ:  Π[100]
ΑΚΕΡΑΙΕΣ : i, j
ΑΡΧΗ
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 100            !ΓΕΜΙΣΜΑ ΠΙΝΑΚΑ
ΔΙΑΒΑΣΕ Π[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!ΤΑΞΙΝΟΜΗΣΗ ΠΙΝΑΚΑ ΣΕ ΑΥΞΟΥΣΑ ΣΕΙΡΑ
ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ 100
ΓΙΑ j ΑΠΟ 100 ΜΕΧΡΙ ι ΜΕ_ΒΗΜΑ -1
ΑΝ Π[j-1] > Π[j] ΤΟΤΕ
temp<-Π[j-1]
Π[j-1]<-Π[j]
Π[j]<-temp
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΡΑΨΕ Π[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση 5

(Ταξινομηση ευθείας ανταλλαγής σε φθίνουσα σειρα)
Δημιουργήστε 2 πίνακες σε ΓΛΩΣΣΑ, ο ένας Ο[50] για να κρατά 50 ονόματα μαθητών μιας τάξης και ο δεύτερος Β[50] για τους βαθμούς τους στο μάθημα των Νέων Ελληνικών. Στη συνέχεια να ταξινομήστε τους πίνακας έτσι ώστε να εμφανίσετε σε φθίνουσα σειρά τους βαθμούς και τα ονόματα των παραπάνω μαθητών.

Λύση

ΠΡΟΓΡΑΜΜΑ ΜΠ5
ΜΕΤΑΒΛΗΤΕΣ
ΧΑΡΑΚΤΗΡΕΣ: Ο[50]
ΠΡΑΓΜΑΤΙΚΕΣ: Β[50], Τ, Τ1
ΑΚΕΡΑΙΕΣ : κ, λ
ΑΡΧΗ
!ΓΕΜΙΣΜΑ ΠΙΝΑΚΩΝ ΜΕ ΣΤΟΙΧΕΙΑ
ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ Ο[κ], Β[κ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!ΤΑΞΙΝΟΜΗΣΗ ΦΥΣΑΛΙΔΑΣ ΜΕ ΦΘΙΝΟΥΣΑ ΣΕΙΡΑ
ΓΙΑ κ ΑΠΟ 2 ΜΕΧΡΙ 50
ΓΙΑ λ ΑΠΟ 50 ΜΕΧΡΙ κ ΜΕ_ΒΗΜΑ -1
ΑΝ Β[λ-1] < Β[λ] ΤΟΤΕ
Τ<-Β[λ-1]               !ΑΝΤΑΛΛΑΓΗ ΣΤΟΙΧΕΙΩΝ ΣΤΟΝ Β ΠΙΝΑΚΑ
Β[λ-1]<-Β[λ]
Β[λ]<-Τ

Τ1<-Ο[λ-1]           !ΑΝΤΑΛΛΑΓΗ ΑΝΤΙΣΤΟΙΧΩΝ ΣΤΟΙΧΕΙΩΝ ΣΤΟΝ Ο ΠΙΝΑΚΑ
Ο[λ-1]<-Ο[λ]
Ο[λ]<-Τ1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!ΕΜΦΑΝΙΣΗ ΜΑΘΗΤΩΝ ΚΑΙ ΒΑΘΜΩΝ ΣΕ ΦΘΙΝΟΥΣΑ ΣΕΙΡΑ
ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 50
ΓΡΑΨΕ Ο[κ], Β[κ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση 6

(Παράλληλοι πίνακες)
Να εισάγετε σε πίνακες Ο και Β 100 θέσεων τα ονόματα 100 μαθητών και τους βαθμούς τους ένα μάθημα. Στη συνέχεια να δημιουργήσετε τους πίνακες Ο1 και Β1 πάλι 100 θέσεων και γεμίστε με ‘ – ‘ τον Ο1 και με -1 τον Β1.
Το πρόγραμμα που θα φτιάξετε να ελέγχει ποιοι μαθητές έχουν βαθμό μεγαλύτερο απο 17,5 και να τοποθετεί τα ονόματα και τους βαθμούς τους στις πρώτες θέσεις των πινάκων Ο1 και Β1 αντίστοιχα. Τέλος να γίνει φθίνουσα ταξιμόμηση του πίνακα Β1 και να εμφανίσετε τα ονόματα και τους βαθμούς των μαθητών με βαθμό πάνω απο 17,5.

Λύση

ΠΡΟΓΡΑΜΜΑ ΜΠ6
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ : Β[100], Β1[100]
ΧΑΡΑΚΤΗΡΕΣ : Ο[100], Ο1[100]
ΑΚΕΡΑΙΕΣ :  ι, μ, κ, τ, τ1
ΑΡΧΗ
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 100   !ΓΕΜΙΣΜΑ ΠΙΝΑΚΩΝ
ΔΙΑΒΑΣΕ Ο[ι], Β[ι]
Ο1[ι] <-   ‘ – ‘
Β1[ι] <-   -1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

κ<-0                                                     !ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΩΝ Ο1, Β1
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΝ Β[ι] > 17.5 ΤΟΤΕ
κ<-κ+1
Β1[κ] <- Β[ι]
Ο1[κ]<- Ο[ι]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ κ                                        !ΦΘΙΝΟΥΣΑ ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ Β1 ΚΑΙ Ο1
ΓΙΑ μ ΑΠΟ κ ΜΕΧΡΙ ι ΜΕ_ΒΗΜΑ -1
ΑΝ Β1[μ-1] < Β1[μ] ΤΟΤΕ
τ<-Β1[μ-1]
Β1[μ-1]<-Β1[μ]
Β1[μ]<-τ

τ1<-Ο1[μ-1]
Ο1[μ-1]<-Ο1[μ]
Ο1[μ]<-τ1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ κ
ΓΡΑΨΕ Ο1[ι], Β1[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση 7

(Διπλή ταξινόμηση σε παράλληλους πίνακες​)
Σε πρόγραμμα σε ΓΛΩΣΣΑ δημιουργήστε 3 πίνακες των 300 θέσεων Ο, Τ, Ε για την αποθήκευση στοιχείων των προϊόντων ενός καταστήματος. Ο πίνακας Ο για τα ονόματα, ο Τ για τις τιμές και ο Ε για την εταιρεία του κάθε προϊόντος. Να διαβάζεται κατά την εκτέλεση του προγράμματος το όνομα μιας εταιρείας. Στη συνέχεια να βρίσκονται και να εμφανίζονται με αύξουσα σειρά ως προς την τιμή τους όλα τα στοιχεία για τα προϊόντα της συγκεκριμένης εταιρείας. Σε περίπτωση που κάποια προϊόνται έχουν την ίδια αξία τότε να εμφανίζεται πρώτο το προϊόν με το μικρότερο αλφαβητικά όνομα. Τέλος αν δεν βρεθεί η εταιρεία που εισάγατε να εμφανίζεται το κατάλληλο μήνυμα.

Λύση

ΠΡΟΓΡΑΜΜΑ ΜΠ7
ΜΕΤΑΒΛΗΤΕΣ
ΧΑΡΑΚΤΗΡΕΣ: Ο[50], Ε[50]
ΠΡΑΓΜΑΤΙΚΕΣ: Β[50], Τ, Τ1
ΑΚΕΡΑΙΕΣ : κ, λ
ΑΡΧΗ
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 300   !ΓΕΜΙΣΜΑ ΠΙΝΑΚΩΝ
ΔΙΑΒΑΣΕ Ο[ι], Τ[ι], Ε[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!ΤΑΞΙΝΟΜΗΣΗ ΣΕ ΑΥΞΟΥΣΑ ΣΕΙΡΑ ΟΛΩΝ ΤΩΝ ΠΙΝΑΚΩΝ
ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ 300
ΓΙΑ κ ΑΠΟ 300 ΜΕΧΡΙ ι ΜΕ_ΒΗΜΑ -1
ΑΝ Τ[κ-1]>Τ[κ] ΤΟΤΕ
Τ<-Τ[κ-1]
Τ[κ-1]<-Τ[κ]
Τ[Κ]<-Τ

Τ1<-Ο[κ-1]
Ο[κ-1]<-Ο[κ]
Ο[Κ]<-Τ1

Τ2<-Ε[κ-1]
Ε[κ-1]<-Ε[κ]
Ε[Κ]<-Τ2

ΑΛΛΙΩΣ_ΑΝ Τ[κ-1] = Τ[κ] ΤΟΤΕ
ΑΝ Ο[κ-1] > Ο[κ] ΤΟΤΕ
Τ<-Ο[κ-1]
Ο[κ-1]<-Ο[κ]
Ο[Κ]<-Τ

Τ1<-Ε[κ-1]
Ε[κ-1]<-Ε[κ]
Ε[Κ]<-Τ1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΔΙΑΒΑΣΕ ΕΤΑΙΡΕΙΑ   !ΑΝΑΖΗΤΗΣΗ ΕΤΑΙΡΕΙΑΣ
κ<-1
ΒΡΕΘΗΚΕ <- ΨΕΥΔΗΣ
ΟΣΟ κ<=300 ΚΑΙ ΒΡΕΘΗΚΕ=ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ Ε[κ]=ΕΤΑΙΡΕΙΑ ΤΟΤΕ
ΒΡΕΘΗΚΕ<-ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!ΕΜΦΑΝΙΣΗ ΠΡΟΙΟΝΤΩΝ ΕΤΑΙΡΕΙΑΣ (ΑΝ ΑΥΤΗ ΒΡΕΘΗΚΕ)
ΑΝ ΒΡΕΘΗΚΕ=ΑΛΗΘΗΣ ΤΟΤΕ
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 300
ΑΝ Ε[ι]=ΕΤΑΙΡΕΙΑ ΤΟΤΕ
ΓΡΑΨΕ Ο[ι], Τ[ι]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
ΓΡΑΨΕ
‘ Η ΕΤΑΙΡΕΙΑ ΔΕΝ ΒΡΕΘΗΚΕ’
ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΓΙΑ ΤΟ ΣΠΙΤΙ…

ΣΤΕΙΛΕ ΜΟΥ ΤΙΣ ΑΠΑΝΤΗΣΕΙΣ: ΕΔΩ

ΘΕΜΑΤΑ ΠΑΝΕΛΛΗΝΙΩΝ