在有序链表上进行二进制搜索

时间:2014-11-05 09:51:13

标签: java binary-search

我需要一些帮助,将二进制搜索方法添加到有序链表中。这是我到目前为止的代码,但我仍然坚持这一部分。我很困惑如何使用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;
   }

1 个答案:

答案 0 :(得分:0)

最好使用数组或使用或实现自己的TreeSet类。使用数组,您可以使用已经更好的算法。