我是Java的初学者,所以我真的不太了解这些东西,我目前正在研究Java程序,并发现了与我正在研究的程序类似的东西。与教师想要的程序的唯一区别是他希望我们使用Scanner
读取文件。所以,如果你能告诉我如何做到这一点我会非常感激。谢谢:)
使用二进制搜索实现以下方法。
public static <E extends Comparable<E>> int binarySearch(E[]list, E key)
答案 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);
}