AuK/Sortieren und Suchen WS13-14/ImplementationMerge
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
Hier eine mögliche Implementation von Mergesort als Klasse:
<code id="52a4505a35a3c">
public class MergeSorter
{
private int[] a;
private int[] b; // Hilfsarray
public void sort(int[] a)
{
this.a=a;
b=new int[a.length];
mergesort(0, a.length-1);
}
private void mergesort(int l, int r)
{
if (l<r)
{
int m=(l+r)/2;
mergesort(l, m);
mergesort(m+1, r);
merge(l, m, r);
}
}
void merge(int l, int m, int r)
{
int i, j, k;
for (i=l; i<=r; i++)
b[i]=a[i];
i=l; j=m+1; k=l;
while (i<=m && j<=r)
if (b[i]<=b[j])
a[k++]=b[i++];
else
a[k++]=b[j++];
while (i<=m)
a[k++]=b[i++];
}
}
</code>
Die Anwedung der Sortierung erfolgt durch den folgenden Aufruf in der Main:
<code id="52a4505a35b1e">
int[] c = {1,19,15,18,20,9,7,5,24,1,9,16,12};
MergeSorter s=new MergeSorter();
s.sort(c);
</code>