Alle Komplexitäten, die Sie angegeben haben, sind wahr, sie werden jedoch in Big O-Notation angegeben , sodass alle additiven Werte und Konstanten weggelassen werden.
Um Ihre Frage zu beantworten, müssen wir uns auf eine detaillierte Analyse dieser beiden Algorithmen konzentrieren. Diese Analyse kann von Hand durchgeführt werden oder in vielen Büchern gefunden werden. Ich werde Ergebnisse aus Knuths Art of Computer Programming verwenden .
Durchschnittliche Anzahl von Vergleichen:
- Blasensortierung :12(N2−NlnN−(γ+ln2−1)N)+O(N−−√)
- Einfügesortierung :14(N2−N)+N−HN
- Auswahlsortierung :(N+1)HN−2N
Wenn Sie diese Funktionen zeichnen, erhalten Sie ungefähr Folgendes:
Wie Sie sehen, ist die Blasensortierung mit zunehmender Anzahl von Elementen viel schlechter, obwohl beide Sortiermethoden die gleiche asymptotische Komplexität aufweisen.
Diese Analyse basiert auf der Annahme, dass die Eingabe zufällig ist - was möglicherweise nicht immer zutrifft. Bevor wir jedoch mit dem Sortieren beginnen, können wir die Eingabesequenz (mit einer beliebigen Methode) zufällig permutieren, um den Durchschnittsfall zu erhalten.
Ich habe die Zeitkomplexitätsanalyse weggelassen, da sie von der Implementierung abhängt, aber ähnliche Methoden verwendet werden können.
Bartosz Przybylski
quelle
Die asymptotischen Kosten oder -Notation beschreiben das einschränkende Verhalten einer Funktion, da ihr Argument gegen unendlich tendiert, dh ihre Wachstumsrate.O
Die Funktion selbst, z. B. die Anzahl der Vergleiche und / oder Swaps, kann für zwei Algorithmen mit denselben asymptotischen Kosten unterschiedlich sein, vorausgesetzt, sie wachsen mit derselben Rate.
Insbesondere erfordert die Blasensortierung im Durchschnitt Tauschvorgänge pro Eintrag (jeder Eintrag wird elementweise von seiner Anfangsposition zu seiner Endposition verschoben, und jeder Tausch umfasst zwei Einträge), während die Auswahlsortierung nur (einmal ) erfordert Minimum / Maximum wurde gefunden, es wird einmal bis zum Ende des Arrays getauscht).n/4 1
In Bezug auf die Anzahl der Vergleiche erfordert die Vergleiche, wobei der maximale Abstand zwischen der Anfangsposition eines Eintrags und seiner Endposition ist, der für gleichmäßig verteilte Anfangswerte normalerweise größer als . Die Auswahlsortierung erfordert jedoch immer Vergleiche.k×n k n/2 (n−1)×(n−2)/2
Zusammenfassend lässt sich sagen, dass die asymptotische Grenze ein gutes Gefühl dafür vermittelt, wie die Kosten eines Algorithmus in Bezug auf die Eingabegröße steigen, aber nichts über die relative Leistung verschiedener Algorithmen innerhalb derselben Gruppe aussagt.
quelle
Die Blasensortierung verwendet mehr Swap-Zeiten, während die Auswahlsortierung dies vermeidet.
Bei Verwendung der Auswahlsortierung werden
n
höchstens die Zeiten ausgetauscht. Bei Verwendung der Bubble-Sortierung wird sie jedoch fast ausgetauschtn*(n-1)
. Und offensichtlich ist die Lesezeit auch im Gedächtnis kürzer als die Schreibzeit. Die Vergleichszeit und andere Laufzeit können ignoriert werden. Auslagerungszeiten sind daher der kritische Engpass des Problems.quelle