Μάθημα 1ο: Αλγόριθμος Φυσαλίδας
Για την κατανόηση του παρόντος video απαιτείται βασική γνώση άλγεβρας
O Αλγόριθμος Φυσαλίδας είναι η απλούστερη διαδικασία ταξινόμησης
Σε αυτό το πλαίσιο η ταξινόμηση σημαίνει να βάζουμε σε σειρά
ένα πίνακα από δεδομένα όπως ακέραιοι
Αρχικά φανταστείτε ένα πίνακα με στοιχεία που θέλουμε να ταξινομίσουμε
Χρησιμοποιύμε έναν άδειο πίνακα για επίδειξη
Ο Αλγόριθμος Φυσαλίδας περιγράφεται ως εξής
Συγκρίνουμε τα δύο πρώτα στοιχεία του πίνακα και αν δεν είναι σε σειρά ανταλάζουμε τις θέσεις τους
Κάνουμε το ίδιο για τα ζεύγη γειτονικών στοιχείων του πίνακα μέχρι και το τελευταίο στοιχείο
Σε αυτό το σημείο το τελευταίο στοιχείο είναι το μεγαλύτερο του πίνακα
Στην συνέχεια επαναλαμβάνουμε την διαδικασία για όλα τα ζευγάρια πλην του τελευταίου στοιχείου
μέχρι ο πίνακας να είναι πλήρως ταξινομημένος
Τώρα γεμίζουμε τον πίνακα με στοιχεία για να δείξουμε την λειτουργία του αλγορίθμου
Ξεκινάμε συγκρίνοντας το 5 με το 9
Από την στιγμή που το 5 είναι μικρότερο του 9 δεν κάνουμε τίποτα
Στην συνέχεια συγκρίνουμε το 9 με το 2
Επειδή το 9 είναι μεγαλύτερο του 2 ανταλλάσουμε τα στοιχεία
Κάνουμε το ίδιο ώσπου το 9 που είναι το μεγαλύτερο στοιχείο να φτάσει στη τελευταία θέση
Αυτός είναι και ο λόγος που ο αλγόριθμος πήρε το όνομα φυσαλίδα
Όταν το 9 φτάσει στην τελευταία θέση
συνεχίζουμε με τα επόμενα περάσματα του αλγορίθμου και ταξινομούμαι τον πίνακα
Ο ψευδοκώδικας για τον αλγόριθμο Φυσαλίδας είναι αρκετά απλός
Μόνο αυτές οι 4 γραμμές που βλέπετε
Ο Αλγόριθμος Φυσαλίδας είναι αργός
Για να σας δείξουμε τι εννοούμε υπολογίζουμε την πολυπλοκότητά του
Υποθέστε ότι έχουμε έναν πίνακα ν στοιχείων
Στο πρώτο πέρασμα εκτελούμε ν-1 συγκρίσεις
για να πάμε το μεγαλύτερο στοιχείο στο τέλος του πίνακα
Στο επόμενο εκτελούμε ν-2 συκρίσεις
και συνεχίζοντας με τον ίδιο τρόπο παίρνουμε το ακόλουθο άθροισμα:
Συκρίσεις = (ν-1) + (ν-2) + ... + 1
Με μαθηματικές πράξεις το παραπάνω άθροισμα ισούται με ν(ν-1)/2 το οποίο είναι ίσο με ν^2/2 - ν/2
Για μεγάλες τιμές του ν, το ν^2 υπερισχύει από τους υπόλοιπους όρους
και λέμε ότι ο αλγόριθμος φυσαλίδας έχει πολυπλοκότητα της τάξης του ν^2