java实现二分查找

二分法查找也叫折半查找,适用于数据量较大时,但是数据需要先排好顺序
实现思路:
1.首先找到中间值,如果要查找的数据就为中间值,你是真的牛皮
2.如果要找的数据小于中间值,则在左边较小的数据里查找!
3.如果要找的数据大于中间值,则在右边较大的数据里查找!

非递归java实现:

 public class BinaryTest {
  public static void main(String[] args) {
    //声明一个有序的数组
    int[] arry = new int[]{-99,-50,-30,-22,-1,3,6,59};
    int head=0;  //最小索引 
    int end=arry.length-1; //最大索引
    int find=-30;  //要查找的值
    boolean flag=true;  //标记
    while(head <=end){        
      int mid = (head+end)/2;
      if(arry[mid]==find){
         System.out.println("找到了,位置在"+mid);
         flag=false;
         break;
     }else if(arry[mid]>find){
         end = mid-1;
      }else if(arry[mid]<find){
         head = mid+1;
      }
    }
    if(flag){
      System.out.println("没找到");
    }
  }
 }

执行结果:
在这里插入图片描述
递归java实现:

public class BinaryTest2 {
  public static int isQuery(int[] arr,int find,int head,int end){   
            int mid = (head+end)/2;    
            if(head >end){
                  System.out.println("找不到呀");
                   return -1;
             }    
            if(arr[mid]==find){
                  System.out.println("找到了,位置在"+mid);
                  return mid;
                 }else if(arr[mid]>find){
                     end = mid-1;
                    return isQuery(arr,find,head,end);
                 }else if(arr[mid]<find){
                      head = mid+1;
                    return isQuery(arr,find,head,end);
              }
               return mid;           
           }
          public static void main(String[] args) {
                   int[] arr = new int[]{-99,-50,-30,-22,-1,3,6,59};
                   int find=6;
                  isQuery(arr,find,0,arr.length-1);
         }
}

执行结果:
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值