因此,我正在学习java课程,并且正在学习排序,搜索,算法和泛型。我试图重新创建一个二分查找方法/类,它接受任何类型的Comparable
对象(如ArrayList < 类型>)。如何在通用程序中实现二进制搜索对象数组?
我明白如何去做int
s,但我真的不知道如何去处理它与非原始类型。 这是我认为它应该大致是这样的:
public class Objects<T> implements Comparable //I'm not sure about this,
//but I need to call compareTo() to compare the objects?
{
/**
* called from other program to find an element index in an array
*/
public static int binSearchAll(T find, T array[])
{
return binarySearch(array, 0, (array.length)-1, find);
}
public static int binarySearch(T array[], int lower, int upper, T X)
//x is the element to find
{
if (upper < lower)
return -1;
int middle = (lower + upper)/2;
if (array[middle].compareTo(X))
return middle;
if (array[middle] < X)
return binarySearch(a, middle+1, upper, X);
else
return binarySearch(a, lower, middle-1, X);
}
}
我试图弄清楚如何使这项工作,但我不知所措。在int
版本中,它可以正常工作,但只适用于integer
类型,并且不会接受double
或string
类型,如问题所述。
,我希望能够创建一个新的对象,并使用它像这样:
String[] str = {"a", "b", "c"};
Objects<String> s = new Objects<String>();
int indexOfB = s.binSearchAll("b", str);
或者,如果可能的话,像这样:
String[] str = {"a", "b", "c"};
int indexOfB = Object<String>.binSearchAll("b", str);
确切措辞的问题是:
创建一个ObjectBinarySearcher类,可以搜索Comparable对象的数组。 在程序中演示该类,该程序在String 对象的数组中搜索字符串。
我几乎可以肯定,我正在推翻这一点。
感谢您的帮助!
谢谢,我没有阅读Comparable类的正确的文档,现在我工作。我认为它与Object.equals()方法类似。 – user2005078