public static void merge(int[] a, int p, int q, int r){
int n1 = q-p+1;
int n2 = r-q;
int[] L = new int[n1+1];
int[] R = new int[n2+1];
for(int i = 1; i < L.length; i++)
L[i-1] = a[p+i-1];
for(int j = 1; j < R.length; j++)
R[j-1] = a[q+j];
L[n1] = Integer.MAX_VALUE;
R[n2] = Integer.MAX_VALUE;
int i = 0, j = 0;
for(int k = p; k < r+1; k++){
if(L[i] <= R[j]){
a[k] = L[i];
i++;
}
else{
a[k] = R[j];
j++;
}
}
}
Das ist allerdings nur die Merge-Methode, Merge-Sort würde dann so aussehen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public static void mergeSort(int[] a, int p, int r){
if(p < r){
int q = (p+r)/2;
mergeSort(a,p,q);
mergeSort(a,q+1,r);
merge(a,p,q,r);
}
}
dereuler
merge sort implentieren
Meine Frage:
implementieren sie die Methode merge()
public class mergesort {
public static void merge(int A[], int p, int q, int r){
/* Hier Code ergänzen */
}
public static void testeBeispiel(int[] beispiel){
int n = beispiel.length-1;
System.out.print("Unsortiert: ");
for(int i=1; i <= n; i++) System.out.print(beispiel[i] + " ");
System.out.println("");