31.12.2014 Aufrufe

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 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!