ΤΑΞΙΝΟΜΗΣΗ
Ευθείας Ανταλλαγής ( Straight Exchange Sort) ή Φυσαλίδας (Bubble Sort) - Η πιο απλή αλλά και πιο αργή
μέθοδος.
Αλγόριθμος Φυσαλίδα_1
Δεδομένα //table,n//
Για i από 2 μέχρι n
Για j από n μέχρι i με_βήμα -1
Αν table[j]<table[j -1] τότε
temp← table[j -1]
table[j -1]← table[j]
table[j]← temp
Τέλος_Αν
Τέλος_Επανάληψης
Τέλος_Επανάληψης
Αποτελέσματα //table//
Τέλος Φυσαλίδα_1
Δεδομένα //table,n//
Για i από 2 μέχρι n
Για j από n μέχρι i με_βήμα -1
Αν table[j]<table[j -1] τότε
temp← table[j -1]
table[j -1]← table[j]
table[j]← temp
Τέλος_Αν
Τέλος_Επανάληψης
Τέλος_Επανάληψης
Αποτελέσματα //table//
Τέλος Φυσαλίδα_1
Παραλλαγή του αλγορίθμου ώστε να σταματά όταν διαπιστωθεί ότι τα στοιχεία
είναι ταξινομημένα.
Αλγόριθμος Φυσαλίδα_2
Δεδομένα // table, n //
i ← 2
Αρχή_επανάληψης
ΤΑΞΙΝΟΜΗΘΗΚΕ ← ΑΛΗΘΗΣ
Για j από n μέχρι i με_βήμα -1
Αν table[j] < table[j - 1] τότε
temp ← table[j - 1]
table[j - 1] ← table[j]
table[j] ← temp
ΤΑΞΙΝΟΜΗΘΗΚΕ ← ΨΕΥΔΗΣ
Τέλος_αν
Τέλος_επανάληψης
i ← i + 1
Μέχρις_ότου ΤΑΞΙΝΟΜΗΘΗΚΕ = ΑΛΗΘΗΣ
Αποτελέσματα // table //
Τέλος Φυσαλίδα_2
Δεδομένα // table, n //
i ← 2
Αρχή_επανάληψης
ΤΑΞΙΝΟΜΗΘΗΚΕ ← ΑΛΗΘΗΣ
Για j από n μέχρι i με_βήμα -1
Αν table[j] < table[j - 1] τότε
temp ← table[j - 1]
table[j - 1] ← table[j]
table[j] ← temp
ΤΑΞΙΝΟΜΗΘΗΚΕ ← ΨΕΥΔΗΣ
Τέλος_αν
Τέλος_επανάληψης
i ← i + 1
Μέχρις_ότου ΤΑΞΙΝΟΜΗΘΗΚΕ = ΑΛΗΘΗΣ
Αποτελέσματα // table //
Τέλος Φυσαλίδα_2
Να
γραφεί πρόγραμμα το οποίο να διαβάζει τα ονόματα, την εθνικότητα και τους
χρόνους οκτώ αθλητών στο δρόμο των 100 μέτρων και να τους εμφανίζει (χρόνος –
όνομα – εθνικότητα) αρχίζοντας από το γρηγορότερο και καταλήγοντας στον πιο
αργό αθλητή.
ΠΡΟΓΡΑΜΜΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΡΧΗ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Να γίνει πρόγραμμα που να ζητάει την ονομασία και την τιμή για 20 φαγητά και στη συνέχεια να εμφανίζει αυτά τα στοιχεία ταξινομημένα σε αλφαβητική σειρά (τιμοκατάλογος).
ΑΘΛΗΤΕΣΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:
i,
j
ΠΡΑΓΜΑΤΙΚΕΣ:
ΧΡΟΝΟΣ[8],
temp1
ΧΑΡΑΚΤΗΡΕΣ:
ΑΘΛΗΤΗΣ[8,
2],
temp2ΑΡΧΗ
ΓΙΑ
i
ΑΠΟ
1
ΜΕΧΡΙ
8 ! ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΩΝ
ΣΕ ΔΥΟ ΠΙΝΑΚΕΣ
ΓΡΑΨΕ
'Δώσε το όνομα του αθλητή της διαδρομής Νο : ',
i
ΔΙΑΒΑΣΕ
ΑΘΛΗΤΗΣ[i,
1]
ΓΡΑΨΕ
'Δώσε τη χώρα του αθλητή της διαδρομής Νο : ',
i
ΔΙΑΒΑΣΕ
ΑΘΛΗΤΗΣ[i,
2]
ΓΡΑΨΕ
'Δώσε το χρόνο του αθλητή της διαδρομής Νο : ',
i
ΔΙΑΒΑΣΕ
ΧΡΟΝΟΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ
i
ΑΠΟ
2
ΜΕΧΡΙ
8 ! ΤΑΞΙΝΟΜΗΣΗ
ΦΥΣΣΑΛΙΔΑΣ ΚΑΙ ΤΩΝ ΔΥΟ ΠΙΝΑΚΩΝ
ΓΙΑ
j
ΑΠΟ
8
ΜΕΧΡΙ
i
ΜΕ_ΒΗΜΑ
-1
ΑΝ
ΧΡΟΝΟΣ[j] < ΧΡΟΝΟΣ[j
-
1]
ΤΟΤΕ
temp1
<-
ΧΡΟΝΟΣ[j
-
1]
ΧΡΟΝΟΣ[j
-
1]
<-
ΧΡΟΝΟΣ[j]
ΧΡΟΝΟΣ[j]
<-
temp1
temp2
<-
ΑΘΛΗΤΗΣ[j
-
1,
1]
ΑΘΛΗΤΗΣ[j
-
1,
1]
<-
ΑΘΛΗΤΗΣ[j,
1]
ΑΘΛΗΤΗΣ[j,
1]
<-
temp2
temp2
<-
ΑΘΛΗΤΗΣ[j
-
1,
2]
ΑΘΛΗΤΗΣ[j
-
1,
2]
<-
ΑΘΛΗΤΗΣ[j,
2]
ΑΘΛΗΤΗΣ[j,
2]
<-
temp2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ
'ΧΡΟΝΟΣ ΟΝΟΜΑ ΧΩΡΑ' ! ΕΜΦΑΝΙΣΗ
ΑΠΟΤΕΛΕΣΜΑΤΩΝ
ΓΙΑ
i
ΑΠΟ
1
ΜΕΧΡΙ
8
ΓΡΑΨΕ
ΧΡΟΝΟΣ[i],
ΑΘΛΗΤΗΣ[i,
1],
ΑΘΛΗΤΗΣ[i,
2]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΑΘΛΗΤΕΣΝα γίνει πρόγραμμα που να ζητάει την ονομασία και την τιμή για 20 φαγητά και στη συνέχεια να εμφανίζει αυτά τα στοιχεία ταξινομημένα σε αλφαβητική σειρά (τιμοκατάλογος).
ΠΡΟΓΡΑΜΜΑ Τιμοκατάλογος_εστιατορίου
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j
ΠΡΑΓΜΑΤΙΚΕΣ: τιμές[20], temp2
ΧΑΡΑΚΤΗΡΕΣ: ονόματα[20], temp1
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ 'Δώσε το όνομα του ', i, ' ου φαγητού:'
ΔΙΑΒΑΣΕ ονόματα[i]
ΓΡΑΨΕ 'Δώσε την τιμή αυτού του φαγητού:'
ΔΙΑΒΑΣΕ τιμές[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 20
ΓΙΑ j ΑΠΟ 20 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ ονόματα[j] < ονόματα[j - 1] ΤΟΤΕ
temp1 <- ονόματα[j - 1]
ονόματα[j - 1] <- ονόματα[j]
ονόματα[j] <- temp1
temp2 <- τιμές[j - 1]
τιμές[j - 1] <- τιμές[j]
τιμές[j] <- temp2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΑΛΦΑΒΗΤΙΚΟΣ ΤΙΜΟΚΑΤΑΛΟΓΟΣ ΦΑΓΗΤΩΝ'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ ονόματα[i], ' : ', τιμές[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j
ΠΡΑΓΜΑΤΙΚΕΣ: τιμές[20], temp2
ΧΑΡΑΚΤΗΡΕΣ: ονόματα[20], temp1
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ 'Δώσε το όνομα του ', i, ' ου φαγητού:'
ΔΙΑΒΑΣΕ ονόματα[i]
ΓΡΑΨΕ 'Δώσε την τιμή αυτού του φαγητού:'
ΔΙΑΒΑΣΕ τιμές[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 20
ΓΙΑ j ΑΠΟ 20 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ ονόματα[j] < ονόματα[j - 1] ΤΟΤΕ
temp1 <- ονόματα[j - 1]
ονόματα[j - 1] <- ονόματα[j]
ονόματα[j] <- temp1
temp2 <- τιμές[j - 1]
τιμές[j - 1] <- τιμές[j]
τιμές[j] <- temp2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΑΛΦΑΒΗΤΙΚΟΣ ΤΙΜΟΚΑΤΑΛΟΓΟΣ ΦΑΓΗΤΩΝ'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ ονόματα[i], ' : ', τιμές[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Mε Επιλογή (selection sort)
Αλγόριθμος Selection_Sort
Δεδομένα // table, n //
Για i από 1 μέχρι n - 1
θέση_min ← i
min ← table[i]
Για j από i + 1 μέχρι n
Αν table[j] < min τότε
min ← table[j]
θέση_min ← j
Τέλος_αν
Τέλος_επανάληψης
table[θέση_min] ← table[i]
table[i] ← min
Τέλος_επανάληψης
Τέλος Selection_Sort
Αλγόριθμος Selection_Sort
Δεδομένα // table, n //
Για i από 1 μέχρι n - 1
θέση_min ← i
min ← table[i]
Για j από i + 1 μέχρι n
Αν table[j] < min τότε
min ← table[j]
θέση_min ← j
Τέλος_αν
Τέλος_επανάληψης
table[θέση_min] ← table[i]
table[i] ← min
Τέλος_επανάληψης
Τέλος Selection_Sort
ΠΡΟΓΡΑΜΜΑ Selection_Sort
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, θέση_min, min, table[20]
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20 !Γέμισμα πίνακα
ΓΡΑΨΕ 'Δώσε το ', i, ' στοιχείο του πίνακα'
ΔΙΑΒΑΣΕ table[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 19 !Ταξινόμηση πίνακα
θέση_min <- i
min <- table[i]
ΓΙΑ j ΑΠΟ i + 1 ΜΕΧΡΙ 20
ΑΝ table[j] < min ΤΟΤΕ
min <- table[j]
θέση_min <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
table[θέση_min] <- table[i]
table[i] <- min
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Εκτύπωση με ταξινομημένα στοιχεία'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ table[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, θέση_min, min, table[20]
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20 !Γέμισμα πίνακα
ΓΡΑΨΕ 'Δώσε το ', i, ' στοιχείο του πίνακα'
ΔΙΑΒΑΣΕ table[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 19 !Ταξινόμηση πίνακα
θέση_min <- i
min <- table[i]
ΓΙΑ j ΑΠΟ i + 1 ΜΕΧΡΙ 20
ΑΝ table[j] < min ΤΟΤΕ
min <- table[j]
θέση_min <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
table[θέση_min] <- table[i]
table[i] <- min
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Εκτύπωση με ταξινομημένα στοιχεία'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ table[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου