Ποτέ μην επιλέξετε ποτέ ένα σταθερό άξονα - αυτό μπορεί να επιτεθεί για να εκμεταλλευτεί χειρότερη περίπτωση O αλγόριθμος σας (n ^ 2) runtime, το οποίο είναι μόνο για μπελάδες. χειρότερη περίπτωση χρόνου εκτέλεσης Quicksort του παρουσιάζεται όταν διχοτόμηση αποτελέσματα σε μία σειρά από 1 στοιχείου, και μία σειρά από n-1 στοιχεία. Ας υποθέσουμε ότι έχετε επιλέξει το πρώτο στοιχείο το διαμέρισμα σας. Αν κάποιος τροφοδοτεί μια σειρά για να αλγόριθμο σας που είναι σε φθίνουσα σειρά, η πρώτη σας άξονα θα είναι το μεγαλύτερο, οπότε ό, τι άλλο στη σειρά θα κινηθούν προς τα αριστερά του. Στη συνέχεια, όταν recurse, το πρώτο στοιχείο θα είναι η μεγαλύτερη και πάλι, έτσι για μια ακόμη φορά θα θέσει τα πάντα προς τα αριστερά του, και ούτω καθεξής.
Μια καλύτερη τεχνική είναι η μέθοδος μέση-της-3, όπου μπορείτε να επιλέξετε τρία στοιχεία στην τύχη, και να επιλέξετε τη μέση. Ξέρετε ότι το στοιχείο που θα επιλέξετε δεν θα είναι η πρώτη ή η τελευταία, αλλά και από το κεντρικό οριακό θεώρημα, η κατανομή της μέσης στοιχείο θα είναι κανονική, το οποίο σημαίνει ότι θα τείνουν προς τα μέσα (και ως εκ τούτου , n lg n ώρα).
Αν θέλετε οπωσδήποτε να εγγυηθεί O (nlgn) χρόνο εκτέλεσης του αλγορίθμου, η μέθοδος στήλες-of-5 για την εύρεση του διάμεσου ενός πίνακα τρέχει σε χρόνο O (n) χρόνο, πράγμα που σημαίνει ότι η εξίσωση επανάληψης για quicksort στη χειρότερη περίπτωση θα να T (n) = O (n) (δείτε το διάμεσο) + O (n) (partition) + 2Τ (n / 2) (recurse αριστερά και δεξιά.) από την κύρια μονάδα θεώρημα, αυτό είναι O (n lg n) . Ωστόσο, ο σταθερός συντελεστής θα είναι τεράστια, και αν χειρότερη επίδοση περίπτωση είναι η κύρια ανησυχία σας, χρησιμοποιήστε μια συγχώνευση είδος αντ 'αυτού, το οποίο είναι μόνο λίγο πιο αργά από ό, τι quicksort κατά μέσο όρο, και εγγυάται O (nlgn) το χρόνο (και θα είναι πολύ πιο γρήγορα από αυτό το κουτσός διάμεση quicksort).
Επεξήγηση του Median της διάμεσες Αλγόριθμος