java实现二分查找-两种方式,二分法查找java代码_1

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: