Java 如何获得二进制搜索算法的通用版本来查找列表中的元素

Java 如何获得二进制搜索算法的通用版本来查找列表中的元素,java,binary-search,Java,Binary Search,我的搜索方法有问题 public int search(T element) { int start = 0; int end = elements.length - 1; while (start <= end) { int middle = ((start + end) / 2); int result = element.compareTo(elements[middle]);

我的搜索方法有问题

public int search(T element)
   {
      int start = 0;
      int end = elements.length - 1;

      while (start <= end)
      {
         int middle = ((start + end) / 2);
         int result = element.compareTo(elements[middle]);
         if (result < 0)
         {
            start = middle - 1;
         }
         else if (result > 0)
         {
            end = middle + 1;
         }  
         else 
         {
            return middle;
         }   
      }
      return -1;
   }
我尝试了各种不同的方法,并查看了许多示例,但仍然无法正常工作

下面是课堂:

class GenericBinarySearchTree<T extends Comparable<T>> 
{
   private T[] elements;
   /*
   **Constructs an empty tree.
   */
   public GenericBinarySearchTree(T[] names)
   {  
      elements = names;
   }
   public int search(T element)
   {
      int start = 0;
      int end = elements.length - 1;

      while (start <= end)
      {
         int middle = ((start + end) / 2);
         int result = element.compareTo(elements[middle]);
         if (result < 0)
         {
            end = middle - 1;
         }
         else if (result > 0)
         {
            start = middle + 1;
         }  
         else 
         {
            return middle;
         }   
      }
      return -1;
   } 
类GenericBinarySearchTree
{
私有T[]元素;
/*
**构造一个空树。
*/
公共GenericBinarySearchTree(T[]名称)
{  
元素=名称;
}
公共整数搜索(T元素)
{
int start=0;
int end=elements.length-1;
while(从0开始)
{
开始=中间+1;
}  
其他的
{
返回中间;
}   
}
返回-1;
} 

}

您的列表需要排序才能使用二进制搜索我不熟悉
GenericBinarySearchTree
。这是你已经(或已经)提供给你的课程吗?如果是这样,请同时发布代码。你实际上没有树,所以不要这样调用你的类。此外,“generic”是一个糟糕的名称片段。最好只使用
BinarySearch
。另外,如果
search
是您唯一的方法,只需使用
static
方法并传入数组即可。您还需要首先对数组进行排序。最后,不需要声明泛型类型,因为您不需要对其执行任何操作—只需使用通配符即可
Vermont is the #7 element in the list!
Kentucky is the #-1 element in the list!

 ----jGRASP: operation complete.
class GenericBinarySearchTree<T extends Comparable<T>> 
{
   private T[] elements;
   /*
   **Constructs an empty tree.
   */
   public GenericBinarySearchTree(T[] names)
   {  
      elements = names;
   }
   public int search(T element)
   {
      int start = 0;
      int end = elements.length - 1;

      while (start <= end)
      {
         int middle = ((start + end) / 2);
         int result = element.compareTo(elements[middle]);
         if (result < 0)
         {
            end = middle - 1;
         }
         else if (result > 0)
         {
            start = middle + 1;
         }  
         else 
         {
            return middle;
         }   
      }
      return -1;
   }