【发布时间】:2021-04-16 01:45:48
【问题描述】:
我有一个用于ArrayList 的合并排序java 代码,但它不能正确排序ArrayList。但我没有发现错误。
代码是:
public void mergeSort(ArrayList<Integer> list, int beg, int fin) {
if (beg < fin) {
int mid= (beg + fin) / 2;
mergeSort(list, beg, mid);
mergeSort(list, mid + 1, fin);
Merge(list, beg, mid, fin);
}
}
public void Merge(ArrayList<Integer> list, int beg, int mid, int fin) {
ArrayList<Integer> left = new ArrayList<>(list.subList(beg, mid));
ArrayList<Integer> right = new ArrayList<>(list.subList(mid, fin));
int i = 0;
int j = 0;
int k = beg;
while (i < left.size() && j < right.size()) {
if (left.get(i) <= right.get(i)) {
list.set(k, left.get(i));
i++;
} else {
list.set(k, right.get(j));
j++;
}
k++;
}
while (i < left.size()) {
list.set(k, left.get(i));
i++;
k++;
}
while (j < right.size()) {
try {
list.set(k, right.get(j));
j++;
k++;
}
}
}
当我从其他班级调用它时......
jpanel4.mergeSort(jpanel4.lista, 0, jpanel4.lista.size() - 1);
(合并在 jpanel4 类中)。
我将数组的合并排序代码转换为该代码,因为它可以与我拥有的其他代码一起正常工作。
谢谢。
【问题讨论】:
-
我认为您出于学习原因需要手动实现排序 - 但只是指出
List.sort()将对您的列表进行排序。
标签: java algorithm sorting arraylist mergesort