java实现二分查找-两种方式,二分法查找java代码
java二分法查找怎么实现
BinarySearch
二分搜索法,顾名思义,就是每次把数据分成两部分,然后找到你想要的数据。
我们可以这样想。二分法搜索和我们平时玩的价格猜谜游戏很像。当你报价时,裁判会告诉你价格相对于真实价值有多高。如果低,我们肯定会报稍高的价格,反之亦然。
(相关视频教程分享:java视频教程)
用二分法搜索时,要求传入的数据必须是有序的,假设现在是升序。然后,每次都将搜索到的值与中间值(数组的左边界(右边界-左边界)/2)进行比较。大的话会找中间值左边的数据,小的话会找中间值右边的数据。
公共类二进制搜索{
//二分搜索法的前提是阵列已经点好了!
公共静态int rank(int key,int nums[])
{
//找到范围的上限和下限
int low=0;
int high=nums . length-1;
//找不到返回值
int not find=-1;
while(低=高)
{
//二等分的中点=数组的左边界(右边界-左边界)/2
//默认情况下,整数类型被舍入。
int mid=low(高-低)/2;
//如果大于key,则中间值为
if(nums[mid]键)
{
//证明key在[低,中-1]的区间内
//因为已经判断了num[mid],所以下界要减一。
高=中-1;
} else if(nums[mid]键)
{
//证明key在[mid 1,high]的区间
//同理,mid对应的值也要从mid 1开始判断。
低=中1;
}
其他
{
//查找成功
返回mid
}
}
//不成功
返回notFind
}
公共静态void main(String[] args) {
System.out.println(请输入数据量:);
Scanner scanner=新扫描仪(system . in);
int amount=scanner . nextint();
int num
int nums[]=new int[amount];
int I=0;
while(iamount)
{
nums[I]=scanner . nextint();
我;
}
arrays . sort(nums);
System.out.println(请输入要查找的值);
int key=scanner . nextint();
int answer=rank(key,nums);
如果(回答!=-1)
{
System.out.println(你要找的数据存在: nums[答案]);
}
其他
{
System.out.println(您要查找的数据不存在);
}
}
}更多java教程请关注PHP中文网Java教程专栏。以上是如何找到java二分法的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。