Βασίζεται στην αρχή της σύγκρισης γειτονικών στοιχείων
του πίνακα και ανταλλαγής τους μέχρι να διαταχθούν όλα σε μία σειρά (αύξουσα ή
φθίνουσα).
Η
λογική είναι η εξής: Κάνουμε διαδοχικές σαρώσεις στον πίνακα. Σε κάθε σάρωση, το μικρότερο
στοιχείο (για αύξουσα) μετακινείται προς την κορυφή του πίνακα αφού γίνουν όλες
οι σαρώσεις θα έχει επιτευχθεί η ταξινόμηση.
Αλγόριθμος Φυσαλίδα_Bubble_Sort
Δεδομένα // ΠΙΝ,Ν//
Για i από 2 μέχρι Ν
Για j από N μέχρι i με_βήμα -1
Αν ΠΙΝ[j] < ΠΙΝ[j-1] τότε
temp ← ΠΙΝ[j-1]
ΠΙΝ[j-1] ← ΠΙΝ[j]
ΠΙΝ[j] ← temp
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσματα //ΠΙΝ,Ν//
Τέλος Φυσαλίδα_Bubble_Sort
! το i περιγράφει τις σαρώσεις του πίνακα που είναι Ν-1
! το j αναφέρεται στα στοιχεία που συγκρίνονται σε κάθε σάρωση από το τέλος προς τη θέση i
! αν το j-1 στοιχείο είναι μεγαλύτερο από το j στοιχείο τότε κάνε αντιμετάθεση στοιχείων. Δηλαδή, το j στοιχείο θα! πάει στη θέση του j-1 και το j-1 στη θέση του j
! Επειδή δε μπορεί να γίνει άμεσα διότι θα χαθεί το στοιχείο j-1, προσωρινά τοποθετείται στη βοηθητική μεταβλητή temp
Παράδειγμα:
Να ταξινομηθούν οι ακέραιοι 12, 7, 5, 3, 10 ενός πίνακα. Πώς διαμορφώνεται ο
πίνακας σε κάθε βήμα του αλγορίθμου;
δείκτες
|
θέσεις πίνακα
|
|||||
i
|
j
|
1
|
2
|
3
|
4
|
5
|
2
|
5
|
12
|
7
|
5
|
3
|
10
|
4
|
12
|
7
|
3
|
5
|
10
|
|
3
|
12
|
3
|
7
|
5
|
10
|
|
2
|
3
|
12
|
7
|
5
|
10
|
|
3
|
5
|
3
|
12
|
7
|
5
|
10
|
4
|
3
|
12
|
5
|
7
|
10
|
|
3
|
3
|
5
|
12
|
7
|
10
|
|
4
|
5
|
3
|
5
|
12
|
7
|
10
|
4
|
3
|
5
|
7
|
12
|
10
|
|
5
|
5
|
3
|
5
|
7
|
10
|
12
|
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου