【发布时间】:2014-04-22 08:37:22
【问题描述】:
private Comparable[] items = new Comparable[1000000];
bubbleSort(items);
public static <T extends Comparable<T>> void bubbleSort(T[] list){
T temp;
for (int k = 1; k < list.length; k++) {
// Perform the kth pass
for (int i = 0; i < list.length - k; i++) {
if (list[i].compareTo(list[i + 1]) > 0){
temp = list[i];
list[i] = list[i + 1];
list[i + 1] = temp;
}
}
}
}
我遇到的问题是if (list[i].compareTo(list[i]) > 0)。我已经注释掉了所有内容,一次一行。这是导致错误的唯一原因,并且在输出中没有给我任何解释。到底是哪几行。这将在 if 处,并调用 bubbleSort 方法。
【问题讨论】:
-
一个表现良好的可比较应该总是有
list[i].compareTo(list[i]) == 0。根据定义。你的意思是list[i].compareTo(list[k])还是相反? -
它实际上应该说
list[i].compareTo(list[i + 1])我在原帖中修复了它。 -
这仍然会导致问题吗?错误是什么?
-
它说“线程中的异常“AWT-EventQueue-0”java.lang.NullPointerException”
-
@ChrisVachon 这意味着您的数组包含空元素。你如何填充它?
标签: java compare abstract compareto