我需要一些帮助,将二进制搜索方法添加到有序链表中。这是我到目前为止的代码,但我仍然坚持这一部分。我很困惑如何使用insert方法添加值,然后搜索它,然后说明元素的位置。这是我到目前为止的计划:
import java.util.LinkedList;
class List {
public List next;
public List previous;
public long data;
public Link(long d) {
data = d;
}
public void displayLink() {
System.out.print(data + " ");
}
}
class OLinkList {
private LinkedList first;
private LinkedList last;
public OLinkList() {
first = null;
last = null;
}
public boolean isEmpty() {
return first == null;
}
public void insert(long num) {
List newLink = new List(num);
if (first == null) {
first = newLink;
last = newLink;
} else {
last.next = newLink;
last = newLink;
}
}
}
现在,我知道二进制搜索是如何工作的。我怎么能拿这样的东西并将它应用到我的代码中呢?
public int binarySearch(int[] a, int x) {
int low = 0;
int high = a.length - 1;
while (low <= high) {
int mid = (low + high)/2;
if (a[mid] == x) return mid;
else if (a[mid] < x) low = mid + 1;
else high = mid - 1;
}
return -1;
}
答案 0 :(得分:0)
最好使用数组或使用或实现自己的TreeSet类。使用数组,您可以使用已经更好的算法。