Ich lese den Beweis des Theorems:
Der Algorithmus Quicksort sortiert eine Folge von Elemente hinein erwartete Zeit.
Der Beweis ist dieser:
Der Einfachheit halber wird bei der Timing-Analyse davon ausgegangen, dass alle Elemente von sind verschieden.
Diese Annahme maximiert die Größen von Und , und maximieren daher die durchschnittliche Zeit, die in den rekursiven Aufrufen verbracht wird (QUICKSORT( ), SCHNELLE SORTE( )).
Lassen sei die erwartete Zeit, die QUICKSORT benötigt, um eine Folge von zu sortieren Elemente.
Deutlich, für einige konstant .
Nehmen Sie dieses Element an (der Pivot, der zufällig ausgewählt wird) ist das i-te kleinste Element des Elemente in Sequenzen.
Dann die beiden rekursiven Aufrufe von QUICKSORT (QUICKSORT( ), SCHNELLE SORTE( )) haben eine erwartete Zeit von Und , bzw.
Seit mit gleicher Wahrscheinlichkeit einen beliebigen Wert dazwischen annimmt Und , und der Saldo von QUICKSORT( erfordert eindeutig Zeit für einige konstant , haben wir die Beziehung:
Algebraische Manipulation von Erträge
Wir werden das für zeigen , , Wo Und .
Für die Grundlage , folgt unmittelbar aus .
Schreiben Sie für den Induktionsschritt als
Seit nach oben konkav ist, kann man das leicht zeigen
Ersetzen In Erträge
Seit Und , es folgt dem .
Daher folgt .
Wie sind wir auf die Relation gekommen ?
Vielen Dank im Voraus.
Bearbeiten:
Können Sie mir diesen Satz erklären:
"Diese Annahme wird die Größen von maximieren Und , und maximieren daher die durchschnittliche Zeit, die in den rekursiven Aufrufen verbracht wird (QUICKSORT( ), SCHNELLE SORTE( )). "
?
Warum maximiert dies die durchschnittliche Zeit, die in den rekursiven Aufrufen verbracht wird?
Quicksort läuft auf Folgendes hinaus:
Auswählen eines Drehpunkts
Große Liste in eine "kleiner als Pivot"-Liste aufteilen und "größer als Pivot"-Liste
Sortieren Und separat Anrufergebnis Und .
Kombinieren Und und Pivot in die endgültige, sortierte Liste .
Die zufällige Auswahl eines Pivots ist eine konstante Zeit. Daraus folgt also
Schritt 2 dauert Zeit für eine Konstante . Sie machen einfach einen Durchgang durch die Liste, vergleichen sie mit dem Pivot und werfen sie in einen von beiden oder . Schritt 4 dauert höchstens Zeit, aus weniger offensichtlichen Gründen. Daher nehmen die Schritte 2 und 4 höchstens in Anspruch Zeit für eine Konstante .
Stufe 3 bleibt. Der Ausdruck
ist der Durchschnitt des Wertes gesamt , und das ist der rekursive Schritt, bei dem zwei strikt kleinere Listen sortiert werden. Daher ist die obige Summe die durchschnittliche Zeit, die für Schritt 3 benötigt wird.
Zusammenfassend dauert der gesamte Prozess weniger als Zeit.
Benutzer175343
FlachBlau
Benutzer175343
Benutzer175343
FlachBlau
FlachBlau
Benutzer175343
FlachBlau
FlachBlau
Benutzer175343
Sergej Zaitsev