Αλγόριθμος |
Καλύτερη περίπτωση |
Μέση περίπτωση |
Χειρότερη περίπτωση |
Μνήμη |
Ευσταθής |
Μέθοδος |
Σημειώσεις
|
Γρήγορη ταξινόμηση (Quicksort)
|
15 !, παραλλαγή του σε 15 !
|
20 !
|
25 !
|
Στη μέση περίπτωση 05 !, στη χειρότερη . Η παραλλαγή του Sedgewick έχει στη χειρότερη περίπτωση .[6]
|
Συνήθως όταν εκτελείται επιτόπου δεν είναι ευσταθής, αν και υπάρχουν ευσταθείς υλοποιήσεις.
|
Διαμέριση
|
Η γρήγορη ταξινόμηση γίνεται συνήθως επιτόπου με μέγεθος στοίβας O(log n).[7][8]
|
Ταξινόμηση με συγχώνευση (Merge sort)
|
20 !
|
20 !
|
20 !
|
15 ! Δες από κάτω για έναν υβριδικό με μνήμη.
|
Ναι
|
Συγχώνευση
|
Αρκετά παραλληλοποιήσιμος (έως και O(log n) χρησιμοποιώντας τον αλγόριθμο των τριών Ούγγρων[9] ή, πιο πρακτικά, με τον παράλληλο αλγόριθμο ταξινόμησης του Cole) για την επεξεργασία μεγάλου πλήθους δεδομένων.
|
Ταξινόμηση με επιτόπου συγχώνευση (In-place merge sort)
|
—
|
—
|
23 ! Δες από κάτω για έναν υβριδικό που τρέχει σε 23 !
|
00 !
|
Ναι
|
Συγχώνευση
|
Μπορεί να είναι ευσταθής με χρήση ευσταθούς επιτόπου συγχώνευσης.[10]
|
Block sort
|
15 !
|
20 !
|
20 !
|
00 !
|
Ναι
|
Εισαγωγή & Συγχώνευση
|
Κάνει επιτόπου συγχώνευση με κομμάτια (blocks) σε O(n) [11] και υλοποιείται από κάτω προς τα πάνω.
|
Tαξινόμηση με σωρό (Heapsort)
|
20 ! Αν όλα τα στοιχεία είναι διακριτά, 20 !
|
20 !
|
20 !
|
00 !
|
Όχι
|
Επιλογή
|
|
Ταξινόμηση φυσαλίδας (Bubble sort)
|
15 !
|
25 !
|
25 !
|
00 !
|
Ναι
|
Ανταλλαγή
|
Απλός στην υλοποίηση.
|
Ταξινόμηση με επιλογή (Selection sort)
|
25 !
|
25 !
|
25 !
|
00 !
|
Όχι
|
Επιλογή
|
Ευσταθής όταν χρησιμοποιείται O(n) επιπλέον μνήμη ή όταν χρησιμοποιούνται συνδεδεμένες λίστες.
|
Ταξινόμηση με εισαγωγή (Insertion sort)
|
15 !
|
25 !
|
25 !
|
00 !
|
Ναι
|
Εισαγωγή
|
O(n + d) για ακολουθίες με d αντιστροφές (δηλαδή ζεύγη στοιχείων που είναι αντίστροφα ταξινομημένα).
|
Shell sort
|
20 !
|
23 ! Εξαρτάται από την ακολουθία διαστημάτων.
|
23 ! Εξαρτάται από την ακολουθία διαστημάτων· η καλύτερη γνωστή είναι
|
00 !
|
Όχι
|
Εισαγωγή
|
Απλός στην υλοποίηση, δεν χρησιμοποιεί αναδρομή, σχετικά γρήγορος και χρησιμοποιείται όταν δεν υπάρχει αρκετή διαθέσιμη μνήμη,για παράδειγμα στα ενσωματωμένα συστήματα. Υπάρχει ακολουθία διαστημάτων με χειρότερη περίπτωση O(n (log n)²), αλλά τότε η καλύτερη περίπτωση υπερβαίνει το O(n log n).
|
Introsort
|
20 !
|
20 !
|
20 !
|
05 !
|
Όχι
|
Διαμέριση & Επιλογή
|
Χρησιμοποιεί quicksort και κάνει εναλλαγή σε ταξινόμηση με σωρό όταν το βάθος της αναδρομής γίνει μεγάλο. Χρησιμοποιείται σε πολλές υλοποιήσεις της STL.
|
Timsort
|
15 !
|
20 !
|
20 !
|
15 !
|
Ναι
|
Εισαγωγή & Διαμέριση
|
Βασίζεται στην ταξινόμηση με συγχώνευση και στην ταξινόμηση με εισαγωγή και λαμβάνει υπόψη ήδη ταξινομημένες υποακολουθίες. Χρησιμοποιείται από την Python, Java, το Android και το GNU Octave.
|
Cubesort
|
15 !
|
20 !
|
20 !
|
15 !
|
Ναι
|
Εισαγωγή
|
Κάνει n συγκρίσεις όταν τα δεδομένα είναι ήδη ή αντιστρόφως ταξινομημένα.
|
Binary tree sort
|
20 !
|
20 !
|
20 ! Όταν χρησιμοποιείται ισοζυγισμένο δέντρο
|
15 !
|
Ναι
|
Εισαγωγή
|
|
Cycle sort
|
25 !
|
25 !
|
25 !
|
00 !
|
Όχι
|
Εισαγωγή
|
Εκτελείται επιτόπου με θεωρητικά βέλτιστο αριθμό εγγραφών.
|
Library sort
|
15 !
|
20 !
|
25 !
|
15 !
|
Ναι
|
Εισαγωγή
|
|
Patience sorting
|
15 !
|
—
|
20 !
|
15 !
|
Όχι
|
Εισαγωγή & Επιλογή
|
Βρίσκει όλες τις μέγιστες αυξανόμενες υποακολουθίες σε O(n log n).
|
Smoothsort
|
15 !
|
20 !
|
20 !
|
00 !
|
Ναι
|
Επιλογή
|
Προσαρμοστικός, παραλλαγή της ταξινόμησης με σωρό που βασίζεται στην ακολουθία Leonardo αντί του δυαδικού σωρού.
|
Tournament sort
|
20 !
|
20 !
|
20 !
|
15 ![12]
|
Όχι
|
Επιλογή
|
Παραλλαγή της ταξινόμησης με σωρό.
|
Cocktail sort
|
15 !
|
25 !
|
25 !
|
00 !
|
Ναι
|
Ανταλλαγή
|
Παραλλαγή της ταξινόμησης φυσαλίδας η οποία κάνει περάσματα και από τις δύο κατευθύνσεις.
|
Comb sort
|
15 !
|
25 !
|
25 !
|
00 !
|
Όχι
|
Ανταλλαγή
|
Παραλλαγή της ταξινόμησης φυσαλίδας η οποία είναι γρηγορότερη στην πράξη.
|
Gnome sort
|
15 !
|
25 !
|
25 !
|
00 !
|
Ναι
|
Ανταλλαγή
|
Παρόμοιος με την ταξινόμηση με εισαγωγή. Δεν περιέχει φωλιασμένες επαναλήψεις.
|