Der randomisierte Auswahlalgorithmus lautet wie folgt:
Eingabe: Ein Array aus (der Einfachheit halber eindeutigen) Zahlen und einer Zahl
Ausgabe: Das Element "Rang " von (dh das Element in Position wenn sortiert wurde)
Methode:
- Wenn es ein Element in , geben Sie es zurück
- Wählen Sie ein Element (den "Pivot") gleichmäßig nach dem Zufallsprinzip aus
- Berechnen Sie die Mengen und
- Wenn , gebe das Element Rang von L zurück .
- Andernfalls geben Sie den Rang Element von R
Mir wurde folgende frage gestellt:
Nehmen wir an, dass , so dass Sie für den Median suchen und lassen & agr; & egr ; ( 1 / 2 , 1 ) eine Konstante. Wie groß ist die Wahrscheinlichkeit, dass die Menge mit dem Median beim ersten rekursiven Aufruf höchstens α n beträgt ?
Mir wurde gesagt, dass die Antwort , mit der Begründung "Der ausgewählte Drehpunkt sollte zwischen 1 & agr; und & agr ; mal dem ursprünglichen Array liegen".
Warum? Als ist jedes Element, das als Drehpunkt gewählt wird, entweder größer oder kleiner als mehr als die Hälfte der ursprünglichen Elemente. Der Median liegt immer in der größeren Unteranordnung, da die Elemente in der unterteilten Unteranordnung immer kleiner als der Drehpunkt sind.
Wenn der Drehpunkt in der ersten Hälfte des ursprünglichen Arrays liegt (weniger als die Hälfte davon), befindet sich der Median mit Sicherheit in der zweiten größeren Hälfte, da er sich in der mittleren Position des Arrays befinden muss, sobald der Median gefunden wurde Alles vor dem Pivot ist kleiner als oben angegeben.
Wenn der Drehpunkt in der zweiten Hälfte des ursprünglichen Arrays liegt (mehr als die Hälfte der Elemente), wird der Median aus dem gleichen Grund sicherlich die erste größere Hälfte sein, bevor der Drehpunkt als kleiner betrachtet wird.
Beispiel:
3 4 5 8 7 9 2 1 6 10
Der Median ist 5.
Angenommen, der gewählte Drehpunkt ist 2. Nach der ersten Iteration lautet er also:
1 2 .... größerer Teil ....
Nur 1
und 2
werden nach der ersten Iteration getauscht. Nummer 5 (der Median) befindet sich noch in der ersten größeren Hälfte (entsprechend dem Drehpunkt 2). Der Punkt ist, dass der Median immer auf der größeren Hälfte liegt. Wie kann er eine Chance haben, in einem kleineren Subarray zu bleiben?