You are on page 1of 5

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Σπουδές Οικονοµίας και Πληροφορικής

Αλγόριθµοι Αναζήτησης και Ταξινόµησης


Αναζήτηση
1. Σε πίνακα table[N] µε µοναδικά στοιχεία, αναζητούµε το στοιχείο key, Σειριακή ή
Γραµµική Αναζήτηση.
Αλγόριθµος Sequential_Search1
Δεδοµένα // n, table, key //
done ← ψευδής
position ← 0
i←1
Όσο (done=ψευδής) και (i<=n) επανάλαβε
Αν table[i]=key τότε
done ← αληθής
position ← i
αλλιώς
i←i+1
Τέλος_αν
Τέλος_επανάληψης
Αποτελέσµατα //done, position //
Τέλος Sequential_Search1

2. Σε πίνακα table[N] µε ΜΗ µοναδικά στοιχεία, αναζητούµε το στοιχείο key, Σειριακή ή


Γραµµική Αναζήτηση.
Αλγόριθµος Sequential_Search2
Δεδοµένα // n, table, key //
done ← ψευδής
Για Ι από 1 µέχρι Ν
Αν table[i]=key τότε
done ← αληθής
Εµφάνισε Ι, ''θέση''
Τέλος_αν
Τέλος_επανάληψης
Αν done= ψευδής τότε
Εµφάνισε ''Δε βρέθηκε''
Τέλος_αν
Τέλος Sequential_Search2

3. Σε πίνακα table[N] ταξινοµηµένο (αύξουσα) µε µοναδικά στοιχεία, αναζητούµε το


στοιχείο key (τροποποιηµένη Σειριακή για πίνακα Ταξινοµηµένο).
Αλγόριθµος Sequential_Search3
Δεδοµένα // n, table, key //
done ← ψευδής
position ← 0
i←1
Όσο (done=ψευδής) και (i<=n) επανάλαβε
Αν table[i]=key τότε
done ← αληθής
position ← i
Αλλιώς_αν key<table[i] τότε
done ← αληθής
αλλιώς
i←i+1
Τέλος_αν
Τέλος_επανάληψης

1
Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Σπουδές Οικονοµίας και Πληροφορικής

Αν pos<>0 τότε
Εµφάνισε pos, ''θέση''
Αλλιώς
Εµφάνισε ''Δε βρέθηκε''
Τέλος_αν
Τέλος Sequential_Search3

4. Σε πίνακα table[N] ταξινοµηµένο (αύξουσα) µε ΜΗ µοναδικά στοιχεία, αναζητούµε το


στοιχείο key (τροποποιηµένη Σειριακή για πίνακα Ταξινοµηµένο).
Αλγόριθµος Sequential_Search4
Δεδοµένα // n, table, key //
Βρέθηκε ß Ψευδής
ΔενΒρέθηκε ß Αληθής
i←1
Όσο ΔενΒρέθηκε = Αληθής και i<=N επανάλαβε
Αν key = table[i] τότε
Εµφάνισε “Βρέθηκε στη θέση”, i
Βρέθηκε ß Αληθής
Αλλιώς_αν key < table[i] τότε
ΔενΒρέθηκε ß Ψευδής
Τέλος_αν
i←i+1
Τέλος_επανάληψης
Αποτελέσµατα // Βρέθηκε //
Τέλος Sequential_Search4

5. Δυαδική Αναζήτηση σε πίνακα table[N] ταξινοµηµένο (αύξουσα), αναζητούµε το


στοιχείο key.
Αλγόριθµος Δυαδική_Αναζήτηση
Δεδοµένα // Ν, table, key //
Left ß 1
Right ß N
pos ß 0
done ß ψευδής
όσο (Left<=Right) και (done=ψευδής) επανάλαβε
M ß (Left+Right) div 2
αν table[M]= key τότε
pos ß M
done ß αληθής
αλλιώς
αν table[M] < key τότε
Left ß M + 1
αλλιώς
Right ß M – 1
Τέλος_αν
Τέλος_αν
Τέλος_επανάληψης
Αν done = αληθής τότε
Εµφάνισε "Το στοιχείο,", S , "υπάρχει στη θέση:", Μ
Αλλιώς
Εµφάνισε "Το στοιχείο,", S , " δεν υπάρχει στον πίνακα"
Τέλος_αν
Τέλος Δυαδική_Αναζήτηση

2
Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Σπουδές Οικονοµίας και Πληροφορικής

Ταξινόµηση
1. Σε πίνακα table[N], αύξουσα, Ταξινόµηση Ευθείας Ανταλλαγής (φυσαλίδα).
Αλγόριθµος Φυσσαλίδα
Δεδοµένα // table, n //
Για j από 2 µέχρι n
Για i από n µέχρι j µε_βήµα –1
Αν table[i-1] > table[i] τότε
αντιµετάθεσε table[i-1], table[i]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσµατα // table //
Τέλος Φυσσαλίδα

2. Σε πίνακα table[N], αύξουσα, Ταξινόµηση Ευθείας Ανταλλαγής (έξυπνη φυσαλίδα 1).


Αλγόριθµος Έξυπνη_Φυσσαλίδα1
Δεδοµένα // table, n //
jß2
Αρχή_Επανάληψης
d ß αληθής
Για i από n µέχρι j µε_βήµα –1
Αν table[i-1] > table[i] τότε
αντιµετάθεσε table[i-1], table[i]
d ß ψευδής
Τέλος_αν
Τέλος_επανάληψης
jßj+1
Μέχρις_ότου d= αληθής ή j>N
Αποτελέσµατα // table //
Τέλος Έξυπνη_Φυσσαλίδα1

3. Σε πίνακα table[N], αύξουσα, Ταξινόµηση Ευθείας Ανταλλαγής (έξυπνη φυσαλίδα 2).


Αλγόριθµος Έξυπνη_Φυσσαλίδα2
Δεδοµένα // table, n //
kß0
jß2
Αρχή_Επανάληψης
d ß αληθής
Για i από n µέχρι j µε_βήµα –1
Αν table[i-1] > table[i] τότε
αντιµετάθεσε table[i-1], table[i]
d ß ψευδής
kßi
Τέλος_αν
Τέλος_επανάληψης
jßk+1
Μέχρις_ότου d= αληθής
Αποτελέσµατα // table //
Τέλος Έξυπνη_Φυσσαλίδα2

3
Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Σπουδές Οικονοµίας και Πληροφορικής

4. Σε πίνακα table[N], αύξουσα, Ταξινόµησης Ευθείας Ανταλλαγής (φυσαλίδα) µε


ανάποδη σειρά.
Αλγόριθµος Φυσσαλίδα_ανάποδη
Δεδοµένα // table, n //
Για j από n µέχρι 2 µε_βήµα -1
Για i από 1 µέχρι j-1
Αν table[i] > table[i+1] τότε
αντιµετάθεσε table[i], table[i+1]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσµατα // table //
Τέλος Φυσσαλίδα_ανάποδη

5. Σε πίνακα table[N], αύξουσα, Ταξινόµησης Ευθείας Ανταλλαγής (έξυπνη φυσαλίδα)


µε ανάποδη σειρά.
Αλγόριθµος Έξυπνη_ Φυσσαλίδα_ανάποδη
Δεδοµένα // table, n //
jßn
Αρχή_Επανάληψης
Τß0
Για i από 1 µέχρι j-1
Αν table[i] > table[i+1] τότε
αντιµετάθεσε table[i], table[i+1]
Tßi
Τέλος_αν
Τέλος_επανάληψης
jßT
Μέχρις_ότου Τ=0
Αποτελέσµατα // table //
Τέλος Έξυπνη_ Φυσσαλίδα_ανάποδη

6. Σε πίνακα table[N], αύξουσα, Ταξινόµησης µε Επιλογή


1) Επιλέγω το µικρότερο στοιχείο του πίνακα
ο
2) Ανταλλάσσω το µικρότερο στοιχείο του πίνακα µε το 1
3) Επαναλαµβάνω τα παραπάνω βήµατα για τα υπόλοιπα στοιχεία του πίνακα 2 … Ν,
3…Ν, κ.ο.κ.
Αλγόριθµος Selection_Sort
Δεδοµένα // table, n //
Για i από 1 µέχρι n-1
min ß table[i]
min_pos ß i
Για j από i+1 µέχρι n
Αν min > table[j] Τότε
min ß table[j]
min_pos ß j
Τέλος_Επανάληψης
table[min_pos] ß table[i]
table[i] ß min
Τέλος_ επανάληψης
Αποτελέσµατα // table //
Τέλος Selection_Sort

4
Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Σπουδές Οικονοµίας και Πληροφορικής

7. Σε πίνακα table[N], αύξουσα, Ταξινόµησης µε Εισαγωγή


1) Μεταφέρω τα στοιχεία του πίνακα table[N] σε πίνακα Χ[N+1], από τη θέση 2 έως τη
θέση N+1.
Για Ι από 1 µέχρι Ν
Χ[Ι+1] ß table[I]
Τέλος_επανάληψης

2) Ελέγχω κάθε στοιχείο του πίνακα µε τα προηγούµενα και µετακινώ τα στοιχεία προς
τα δεξιά για να πάρουν την κατάλληλη θέση.

Για i από 3 µέχρι n+1


temp ß X[i]
X[1] ß temp
jßi-1
Όσο temp<=X[j] επανάλαβε
Χ[j+1] ß X[j]
jßj-1
τέλος_επανάληψης
Χ[j+1] ß temp
Τέλος_επανάληψης

3) Μεταφέρω τα στοιχεία του πίνακα Χ[Ν+1] πίσω στον πίνακα table[N], από τη θέση 1
έως τη θέση Ν.
Για Ι από 1 µέχρι Ν
table[Ι] ß X[I+1]
Τέλος_επανάληψης

You might also like