Day03 二分查找(有序数组)

转载注明!https://blog.csdn.net/qq_31842777/article/details/90339243
北京下了雨,郁郁清爽,此时此刻,一个人孤坐在教室。

一、二分查找的定义、适用及优点

1. 定义
二分查找又称折半查找。基本思想为先确定待查对象的范围,然后逐步缩小范围直到找到或找不到该对象为之。具体地讲,就是比较该区间的中间值,若大于中间值,就在右半区间继续查找,否则就在左半区间继续查找,如此循环,直到找到或找不到为之。

2. 适用及优点
优点:比较次数少,查找速度快;
缺点:要求待查表为有序表(排序本身很费时,高效率的算法也得O(nlog n));
适用:只适用于顺序存储结构,且适用于插入删除少且查找频繁的有序列表。

对于一个大小为N的数组,二分查找用了log N步;二分查找的时间复杂度为O(log n);

二、二分查找的具体实现

下面展示二分查找的代码实现:

// 二分查找的实现
public class BinarySearch{
    public static int get(int target, int[] array){
         //判断数组是否为空
          if(array==null||array.length==0){
             return -1;
          }
          //初始化
          int low=0;
          int high=array.length-1;
          int mid=0;

         while(low<=high){
              mid=(high+low)/2;
              if(target==array[mid]){
                  return mid;
              }
              else if(target>array[high]||target<array[low]){
                  return -1;
              }
              else{
                   if(target>array[mid]){
                      low=mid+1;
                   }
                    if(target<array[mid]){
                      high=mid-1;
                   }
              }
         }
         return -1;
    }
    
    //测试
    public static void main(String args[]){
       int[] array=new int[]{1,2,4,6,7,10,15,19};
       System.out.println(BinarySearch.get(15,array));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值