首页 > 代码库 > java二分查找举例讨论
java二分查找举例讨论
最近做笔试题有这么一个关于二分查找的例子,有些疑惑。
给一个有序数组,和一个查找目标,用二分查找找出目标所在index,如果不存在,则返回-1-(其应该出现的位置),比如在0,6,9,15,18中找15,返回3;找10.则返回-4(-1-3)
实现如下:
public class Sulution1 { public static void main(String[] args) { System.out.println(findBySep(2, new int[]{0,2,4,6,9})); } public static int findBySep(int a, int[] arr){ int high = arr.length-1; int low = 0; int mid = 0; while(high>low){ mid = low+((high-low)>>1); if(a==arr[mid]) return mid; else if(a>arr[mid]) low = ++mid; else high = --mid; } return -1-(a>arr[mid]?++mid:mid); }}
但结果返回的是-2,也就是-1-1,调试发现在执行二分查找时跳过了要查找的index,但逛了些博客翻了些书,二分查找的实现均大同小异,比较疑惑,难道是二分查找的实现本身有问题还是我的实现思路有问题?还请路过的英雄指点一二。
java二分查找举例讨论
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。