我的代码有问题。当我调用方法sort并将数组作为参数传递给它(sort(array))时,它给了我一个错误。有人可以告诉我有什么问题吗?感谢
public class MergeSort {
public static <T extends Comparable<T>> void sort (T[] a) {
if (a.length <= 1)
return;
int hSize = a.length / 2;
T[] lTab = (T[])new Comparable[hSize];
T[] rTab = (T[])new Comparable[a.length-hSize];
System.arraycopy(a, 0, lTab, 0, hSize);
System.arraycopy(a, hSize, rTab, 0,a.length-hSize);
sort(lTab);
sort(rTab);
merge(a, lTab, rTab);
}
private static <T extends Comparable<T>> void merge (T[] a, T[] l, T[] r) {
int i = 0; // indexes l
int j = 0; // indexes r
int k = 0; // indexes a
while (i < l.length && j < r.length)
if (l[i].compareTo(r[j]) < 0)
a[k++] = l[i++];
else
a[k++] = r[j++];
while (i < l.length)
a[k++] = l[i++];
while (j < r.length)
a[k++] = r[j++];
}
}
错误是:
method sort in class MergeSort cannot be applied to given types Required T[] Found int[]
答案 0 :(得分:3)
您必须确保type
确实提供了implements Comparable
您似乎正在传递int[]
而不是Integer[]
您将无法使用原始类型。对于这些情况,您必须使用其本身实现Comparable的Wrappers
。
如果您使用自己的type
(即您自己的对象),则该类型must
会实现可比较。