Ταξινόμηση φυσαλίδας (bubble sort) είναι το όνομα ενός απλού αλγόριθμουταξινόμησης. Λειτουργεί συγκρίνοντας βηματικά τα στοιχεία μιας λίστας και εναλλάσοντάς τα ώστε να βρεθούν σε σωστή σειρά. Τα βήματα επαναλαμβάνονται μέχρι να ταξινομηθεί ολόκληρη η λίστα.
Το όνομα του αλγόριθμου προέρχεται από τον τρόπο ταξινόμησης: τα μεγαλύτερα στοιχεία κατευθύνονται προς το τέλος, όπως οι φυσαλίδες που αναδύονται στην επιφάνεια.
Αλγόριθμος
BUBBLESORT(A)
1 for i ← 1 to length[A]
2 do for j ← length[A] downto i + 1
3 do if A[j] < A[j - 1]
4 then exchange A[j] ↔ A[j - 1]
Υπάρχουν διάφορες παραλλαγές υλοποίησης της ταξινόμησης φυσαλίδας. Παρακάτω παρουσιάζεται η κλασική περίπτωση με σταθερό αριθμό επαναλήψεων. [2]
publicstaticvoidbubbleSort(int[]x){intn=x.length;for(intpass=1;pass<n;pass++){// 1 for i ← 1 to length[A]// η επόμενη επανάληψη ολοένα και γίνεται μικρότερηfor(inti=0;i<n-pass;i++){// 2 do for j ← length[A] downto i + 1if(x[i]>x[i+1]){// 3 do if A[j] < A[j - 1]// ανταλλαγή μεγαλύτερου <-> μικρότερουinttemp=x[i];x[i]=x[i+1];x[i+1]=temp;// 4 then exchange A[j] ↔ A[j - 1]}}}}
Ανάλυση
Ο χρόνος εκτέλεσης εξαρτάται από τον αριθμό των επαναλήψεων του βρόχου for στις γραμμές 2-4.
Για δεδομένη τιμή του i, ο βρόχος (loop) επαναλαμβάνεται n-i φορές και
το i παίρνει τιμές .
Συνεπώς, ο συνολικός αριθμός επαναλήψεων είναι:
Επομένως, ο χρόνος εκτέλεσης του αλγόριθμου ταξινόμησης φυσαλίδας είναι σε όλες τις περιπτώσεις [3][4].