I am trying to write a merge sort algorithm. I can't tell if this is actually a canonical merge sort. If I knew how to calculate the runtime I would give that a go. Does anyone have any pointers?
public static void main(String[] argsv) {
int[] A = {2, 4, 5, 7, 1, 2, 3, 6};
int[] L, R;
L = new int[A.length/2];
R = new int[A.length/2];
int i = 0, j = 0, k;
PrintArray(A);
// Make left and right arrays
for (k = 0; k < A.length; k++) {
if (k < A.length/2) {
L[i] = A[k];
i++;
}
else {
R[j] = A[k];
j++;
}
}
PrintArray(L);
PrintArray(R);
i = 0;
j = 0;
// Merge the left and right arrays
for (k = 0; k < A.length; k++) {
System.out.println(i + " " + j + " " + k);
if (i < L.length && j < R.length) {
if (L[i] < R[j]) {
PrintArray(A);
A[k] = L[i];
i++;
}
else {
PrintArray(A);
A[k] = R[j];
j++;
}
}
}
PrintArray(L);
PrintArray(R);
PrintArray(A);
}
public static void PrintArray(int[] arrayToPrint) {
for (int i = 0; i < arrayToPrint.length; i++) {
System.out.print(arrayToPrint[i] + " ");
}
System.out.print("\n");
}