通用二进制搜索-java

时间:2014-04-22 20:32:55

标签: java

我是Java的初学者,所以我真的不太了解这些东西,我目前正在研究Java程序,并发现了与我正在研究的程序类似的东西。与教师想要的程序的唯一区别是他希望我们使用Scanner读取文件。所以,如果你能告诉我如何做到这一点我会非常感激。谢谢:)

使用二进制搜索实现以下方法。

public static <E extends Comparable<E>> int binarySearch(E[]list, E key)

1 个答案:

答案 0 :(得分:0)

第一步:创建一个实现Comparable

的类

第二步:实现二进制搜索功能。您可以使用this链接。

无论您比较什么,都必须使用implements Comparable。你应该覆盖compareTo方法。

例如

class Person implements Comparable<Person>
{
  private int age;
  private String name;
  public Person(String name, int age)
  {
    this.name = name;
    this.age = age;
  }
  @Override
  int compareTo(Person p)
  {
     return p.age - this.age;
  }
}

public class BinarySearch {


    private BinarySearch() { }


   public static <E extends Comparable<E>>int binarySearch(E[] list, E key){
        int lo = 0;
        int hi = list.length - 1;
        while (lo <= hi) {
            // Key is in a[lo..hi] or not present.
            int mid = lo + (hi - lo) / 2;
            if      (key < list[mid]) hi = mid - 1;
            else if (key > list[mid]) lo = mid + 1;
            else return mid;
        }
        return -1;
  }

public static void main(String args[])
{
  Person personArray[] = new Person[10];
  Person toBeFound = new Person("Joe", 5);
  // fill the array here
  int x = BinarySearch.binarySearch(personArray, toBeFound);
  if(x == -1) System.out.println("Not found");
  else System.out.println(x);
}