二分查找法


二分查找法

首先定义一个数组:
int [] arr ={1,5,6,8,9,15,20};
定义一个要查找的数:
Scanner sc = new Scanner(system.in);
sout(“请输入您要查找的数:”);
int x =sc.nextInt();
循环查找:
int left = 0; //查找区间的左边界下标
int right = arr.length-1;//查找区间的右边界下标
int mid =(left+right)/2 //定义一个中间数下标
boolean flag =false ; //默认找不到
while(left<=right){
if(x==arr[mid]){
sout(“找到了!下标为:"+mid);
flag = true;
break;
}else if(x<arr[mid]){//新的查找区间在中间数的左边
right = mid-1;
}else if(//新的查找区间在中间数的右边
left = mid+1;
}
mid=(left+right)/2;//重新定义中间数
}
sout(!flag?“找不到!”:"")

知识总结:
二分查找法只能在有序数组中使用,它的原理是定义一个查找区间,首先这个查找区间的左边界是第一个元素,下标为0,右边界是数组的最后一个元素,下标为数组长度-1.找到这个数组的中间数(左边界下标加右边界下标除2)和你要查找的数进行比较,如果相等,你查找的数就是这个数组的中间数,如果不是的话分为两种情况:1.中间数比你要查找的数大,由于数组数有序数组(默认升序),那么你要查找的数在中间数的左边,那么这是就出现了一个新的查找区间,左边界不变,右边界下标为中间数下标-1,重新定义中间数,等于新的查找区间左边界加右边界下标出2。2.中间数比你查找的数小,那么你要查找的数在中间数的右边,那么这是就出现了一个新的查找区间,右边界不变,左边界下标为中间数下标+1,重新定义中间数,等于新的查找区间左边界加右边界下除2。如此循环,直至找找你要查找的那个数。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值