1.帮忙写个例子哦,是这样的么??
假设m就是要求的,大概是这样么?
XXX found(int n){
int l=0;
int h=n - 1;   
  while(l<=n)   
  {  j=(l+h)/2;   
     if   (m==x[j])   break;   
     if   (m   <   x[j])   h=--j;   
     else   l=++j;   
  }
}
2.那还要别的方法干什么??
谢谢!!

解决方案 »

  1.   

    有序的情况下,二分是最快的,别的是不是有更好的我就不清楚了package algorithm;
    public class BinarySearch {
    public static void main(String[] args) {
    int[] a = new int[10]; // 10个有序整数
    for (int i = 0; i < a.length; i++) {
    a[i] = i;
    } System.out.println(sort(a, 3)); // 找到3的位置,如果没有的话,就返回-1
    } //
    public static int sort(int[] a, int x) {
    boolean find = false;
    int m = 0;
    int n = a.length-1; int p = 0; while (m <= n) {
    p = (n + m) / 2;
    if (a[p] == x) {
    find = true;
    break;
    }
    if (a[p] < x) {
    m = p;
    } else {
    n = p;
    }
    }

    if(find) return p;
    else return -1;
    }
    }
    给个例子,仓促写的,没有经过严格的测试。