我正在实现插入排序方法。这是我的代码的要求。
我的问题是:在主方法中调用时,对Comparator参数c使用什么?
这是到目前为止,我有一些未实现的方法(合并isAnagaram排序)忽略了那些
public class Sorting
{
public static <T extends Comparable<T>> void insertionSort(T[] a, Comparator<T> c)
{
for (int i = 0; i < a.length; i++)
{
T key = a[i];
int j;
for (j = i - 1; j >= 0; j--)
{
if (c.compare(a[j], key) <= 0)
break;
a[j + 1] = a[j];
}
a[j + 1] = key;
}
}
public static void mergeSort()
{
//TODO
}
public static boolean isAnagram(String first, String second)
{
//TODO
return false;
}
public static void main(String[] args)
{
Integer a[] = { 99, 8, 19, 88, 62, 2, 1, 9, 19 };
// not sure how to pass parameter comparator
insertionSort(a, null );
for (int i = 0; i < a.length; i++)
{
System.out.print(a[i] + " ");
}
}
}
我在堆栈溢出中四处张望,并且在Comparator接口上用Google搜索了很多,但是我真的找不到任何需要将通用比较器作为参数传递的方法。有人可以帮助我说出我不了解的内容或将我引导到正确的方向。
Comparator
是interface
,无法实例化。您需要实现它。有两种实现方法:
compare
equals
您需要为Integer
元素实现它们。像这样:
public class IntegerComparator implements Comparator {
public int compare(Integer a, Integer b) {
return a.intValue() - b.intValue();
}
public int equals(Object obj) {
return this.equals(obj);
}
}
并在您中这样main
称呼它:
insertionSort(a, new IntegerComparator );
说明:Comparator
是interface
,因此无法实例化。您需要实现它。您有一个Integer
要排序的元素数组,因此可以实现一个Integer
Comparator
。该compare
方法返回int值的减法。如果a <b,则为负。如果a == b,则为0。如果a> b,则为正。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句