マージソートを実装しようとしていますが、マージ機能に行き詰まっています:
これが私の機能です:
public static void merge(Comparable[] a, Comparable[] aux, int low, int mid, int hi) {
// Copy the elements to the aux array
for(int i = low; i < a.length; i++) {
aux[i] = a[i];
}
int i = low, j = mid + 1;
for (int k = low; k <= hi; k++) {
if (i > mid) a[k] = aux[j++];
else if (j > hi) a[k] = aux[i++];
else if (less(aux[j], aux[i])) a[k] = aux[j++];
else a[k] = aux[i++];
}
}
次の入力を実行します。
[2, 4, 6, 8, 3, 5, 7, 9]
次の結果が生成されます。
[2, 3, 3, 3, 3, 5, 7, 9]
呼び出し自体は次のとおりです。
int mid = 0 + (my_array.length - 0) / 2;
MergeSort.merge(my_array, my_array, 0, mid -1, my_array.length-1);
私はそれを完全に釘付けにすることはできません。