Drei divide-and-conquer Algorithmen 1 Karatsuba-Multiplikation von ...
Drei divide-and-conquer Algorithmen 1 Karatsuba-Multiplikation von ...
Drei divide-and-conquer Algorithmen 1 Karatsuba-Multiplikation von ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
mergesort := proc(A:list(integer))<br />
local B,C,length,half;<br />
length := nops(A);<br />
half := floor(length/2);<br />
if length < 2 then RETURN(A) else<br />
B := [op(1..half,A)];<br />
C := [op(half+1..length,A)];<br />
RETURN(merge(mergesort(B),mergesort(C)));<br />
fi;<br />
end;<br />
mergesort reduziert das Sortierproblem für eine Liste der<br />
Länge n auf zwei Sortierprobleme (etwa) halber Größe und<br />
linearen Zusatzaufw<strong>and</strong> für Verschmelzen und overhead<br />
Komplexitätsanalyse (für n = 2 m ):<br />
t(2n) :=<br />
⎧<br />
⎨<br />
⎩<br />
Anzahl der Vergleichsoperationen + overhead für<br />
Listen der Länge n<br />
t(2n) = 2 · t(n) + Θ(n) ,<br />
t(1) = Θ(1)<br />
⇒ t(n) ∈ Θ(n log 2 n)<br />
5