我在Java中创建一个mergesort方法,但我似乎无法知道什么是错的。我试过.add和.set,但它似乎没有用。从我在调试器中看到的,数字是正确的。请帮帮我!
mergesort(list, 0, list.size() - 1);
private void mergesort(ArrayList<Integer> list, int l, int h) {
if (l < h) {
int m = (l + h) / 2;
mergesort(list, l, m);
mergesort(list, m + 1, h);
merge(list, l, m, h);
}
}
这是我的合并方法。
private void merge(ArrayList<Integer> list, int low, int middle, int high) {
ArrayList<Integer> temp = new ArrayList<Integer>();
int low_end = (middle - 1);
int tmp_pos = low;
int num_elements = (high - low + 1);
while ((low <= low_end) && (middle <= high)) {
if (list.get(low) <= list.get(middle)) {
temp.add(tmp_pos++, list.get(low++));
}
else {
temp.add(tmp_pos++, list.get(middle++));
}
}
while (low <= low_end) {
temp.add(tmp_pos++, list.get(low++));
}
while (middle <= high) {
temp.add(tmp_pos++, list.get(middle++));
}
for (int i = 0; i < num_elements; i++) {
list.set(high, temp.get(high));
high--;
}
}
任何帮助表示感谢。