二分查找

代码

public class Test {
   public static void main(String[] args)  {
       int [] a = {1,2,3,4,5,6,7,9};
       boolean flag = exists(a,10);
       System.out.println(flag);

   }
   public static boolean exists(int [] arr, int num){
       if(arr==null || arr.length==0)
           return false;
       int L = 0;
       int R = arr.length-1;
       while (L < R){
           int mid = L + ((R-L)>>1);
           if (arr[mid] == num)
               return true;
           else if(arr[mid] > num)
               R = mid -1;
           else
               L = mid +1;
       }
       return arr[L] == num;
   }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 选择排序 原理: 使用两个for嵌套循环,比较第一个索引位置的数据和其他所有数据,找最大(小),最大(小)的放索引...
    gaoze0427阅读 942评论 0 1
  • 先与l+(r-l)/2处比较就是中间位置比较,为什么不是(l+r)/2呢,因为l+r相加有可能会发生溢出。 小于中...
    一个人的飘阅读 4,655评论 0 0
  • ------ 二分查找基本版及其各种变形的汇总 思想: 二分搜索的核心就是**循环结束条件**和**左右边界迭代规...
    xushichao阅读 2,118评论 0 0
  • 【传智播客.黑马程序员训练营成都中心】 转载请注明出处作者: 成都校区.堂堂老师 前言 查找二字,我们可以理解成:...
    OpenCoder阅读 11,577评论 2 6
  • 参考: @CyC2018 正常实现 Input : [1,2,3,4,5]key : 3return the in...
    iuiyiyut阅读 3,728评论 0 0