【发布时间】:2019-04-11 19:21:56
【问题描述】:
所以我试图在java(特别是处理)中制作一个mergesort程序,逐帧执行该过程。当它通过 for 循环在 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] 时重复它们
【问题讨论】:
-
最好的办法是使用调试器逐步完成。我相信您将能够立即看到发生了什么。
-
@DawoodibnKareem 我该怎么做呢?
-
您的 IDE 将内置一个调试器。如果不明白如何使用它,在线某处会有说明。 Google 是您的朋友。
-
@DawoodibnKareem 我用处理调试器逐步完成了它,但我得到的只是更困惑
标签: java arrays sorting processing mergesort