Итак, я пытаюсь создать программу слияния в java (в частности, обрабатывающую), которая шаг за шагом проходит процесс.Когда он сортировал его в 1 кадре, просматривая циклы, он, казалось, работал нормально (я не тестировал его всесторонне, поскольку это не было моей целью), но после внесения изменений в него необходимо, чтобы он функционировал, он не работаетКажется, я хочу работать правильно.
Я не очень много пробовал, так как понятия не имею, что может быть причиной этого.
merge();
if (i1 < arr.length) {
if (i2 < arr.length) {
if (i3 <= i2 + i1) {
i3++;
} else {
i2 += i1 * 2;
l = i2 + 0;
r = i2 + i1;
}
} else {
i1 *= 2;
i2 = 0;
i3 = 0;
l = 0;
r = i1 + 0;
arr = w.clone();
}
} else {
noLoop();
}
void merge() {
int lMax = i2 + i1;
int rMax = i2 + i1 * 2;
if (r < arr.length - 1 && l < arr.length - 1) {
if ((l <= lMax) && (r >= rMax || arr[l] <= arr[r])) {
float[] t = arr.clone();
w[i3] = t[l];
arr = t.clone();
l++;
} else {
float[] t = arr.clone();
println(arr[r], t[r], w[i3]);
w[i3] = t[r];
println(arr[r], t[r], w[i3]);
arr = t.clone();
r++;
println();
}
}
}
это должно просто отсортировать элементы arr
но, похоже, дублирует их всякий раз, когда arr[r] < arr[l]