Nie einen festen Dreh wählen - diese angegriffen werden können Ihren Algorithmus schlimmsten Fall O (n ^ 2) Laufzeit zu nutzen, die nur Ärger bitten. Quicksort schlimmste Fall tritt auf, wenn die Laufzeit Ergebnisse Partitionierung in einer Reihe von 1-Elemente, und einer Anordnung von n-1 Elemente. Angenommen, Sie das erste Element als Partition auswählen. Wenn jemand ein Array an Ihren Algorithmus-Feeds, die in absteigender Reihenfolge ist, wird Ihre erste Dreh die größte sein, so alles in der Reihe wird auf der linken Seite verschieben. Dann, wenn Sie Rekursion, wird das erste Element die größte wieder sein, so einmal mehr Sie alles links von mir ausdrückte, und so weiter.
Eine bessere Technik ist das Median-of-3-Verfahren, in dem Sie drei Elemente zufällig wählen, und in die Mitte wählen. Sie wissen, dass das Element, das Sie nicht das der erste oder der letzte, sondern auch durch den zentralen Grenzwertsatz wählen sein, die Verteilung des mittleren Element wird normal sein, was bedeutet, dass Sie in Richtung der Mitte neigen wird (und damit , n lg n-Zeit).
Wenn Sie unbedingt wollen O (NLGN) Laufzeit für den Algorithmus zu gewährleisten, die Spalten-of-5-Methode des Median eines Arrays für die Suche läuft in O (n) Zeit, was bedeutet, dass die Rekursionsgleichung für quicksort im schlimmsten Fall wird werden T (n) = O (n) (den Median finden) + O (n) (Partition) + 2T (n / 2) (recurse links und rechts.) Nach dem Master-Theorem, das ist O (n lg n) . Allerdings wird der konstante Faktor sehr groß sein, und wenn schlimmste Fall Leistung das primäre Anliegen ist, verwenden Sie eine Mergesort statt, die nur ein wenig langsamer als Quicksort im Durchschnitt ist und garantiert O (NLGN) Zeit (und wird viel schneller als dieser lahm Median quicksort).
Erklärung des Median des Mediane Algorithm