(Quelle: http://de.wikipedia.org/wiki/Mergesort sehr veraendert) //Dieser Pseudo-Code sortiert nicht in-place. //Jedoch kann man anhand dieses Codes auch die in-place-Variante verstehen. //(Bei in-place hat man keine Rueckgabewerte, ausserdem nimmt man als Argumente der Methoden das originale Array und die Indices der aktuellen Teilbereiche.) funktion mergesort(array) falls Laenge von array <= 1 dann antworte array sonst halbiere array in linkerTeil, rechterTeil linkerTeil := mergesort(linkerTeil) rechterTeil := mergesort(rechterTeil) mergedTeil := merge(linkerTeil, rechterTeil) antworte mergedTeil funktion ende funktion merge(linkerTeil, rechterTeil) erzeuge mergedTeil mit Laenge der beiden Teile //Variablen fuer Indices l := 0 //in linkerTeil r := 0 //in rechterTeil n := 0 //in mergedTeil wiederhole solange (l < Laenge von linkerTeil) und (r < Laenge von rechterTeil) falls (linkerTeil[l] <= rechterTeil[r]) dann fuege linkerTeil[l] in mergedTeil[n] ein inkrementiere Index für linkerTeil und mergedTeil sonst fuege rechterTeil[r] in mergedTeil[n] ein inkrementiere Index für rechterTeil und mergedTeil ende wiederhole solange l < Laenge von linkerTeil fuege linkerTeil[l] in mergedTeil[n] ein inkrementiere Index für linkerTeil und mergedTeil ende wiederhole solange r < Laenge von rechterTeil fuege rechterTeil[r] in mergedTeil[n] ein inkrementiere Index für rechterTeil und mergedTeil ende antworte mergedTeil funktion ende