其他分享
首页 > 其他分享> > 二分查找法demo

二分查找法demo

作者:互联网

正文

  中午闲着有点时间,做个demo睡觉去,这个例子网上应该都有,自己只是敲一下给自己做个记录。

  

  public static void main(String[] args) {

    int[] whitelist = new int[]{12,13,34,56,78,88,99,100};
    Arrays.sort(whitelist);
    Scanner sc = new Scanner(System.in);

    boolean go=true;
    while(true)
    {
      System.out.println("请输入要查找的数");
      int nextInt = sc.nextInt();

      sc.nextLine();
      int result = rank(nextInt,whitelist);
      if(result!=-1)
      {
        System.out.println("找到的数字位置为:"+result);
        go=false;
      }
      else
      {
        System.out.println("没有找到输入的数字位置");
      }
      }
      }

      public static int rank(int key, int[] a) {
        // 数组必须是有序的
        int lo = 0;
        int hi = a.length - 1;
        while (lo <= hi) {
        // 被查找的键要么不存在,要么必然存在于a[lo,hi]之间
        int mid = lo + (hi - lo) / 2;
        if (key < a[mid]) {
        hi = mid - 1;
        } else if (key > a[mid]) {
          lo = mid + 1;
        } else {
          return mid;
      }

    }

    return -1;
  }

 

标签:二分,int,demo,whitelist,mid,System,查找,lo,hi
来源: https://blog.51cto.com/u_15199183/2772216