我的日常

登录/注册
您现在的位置:论坛 资料库 JAVA开发 > 乐视2017暑假实习生笔试题二分查找之JAVA实现
总共48087条微博

动态微博

查看: 2685|回复: 9

乐视2017暑假实习生笔试题二分查找之JAVA实现

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2017-02-23 18:30:38 |只看该作者 |倒序浏览
    试题

    对一个含有20个元素的有序数组做二分查找,数组起始下标为1,则查找A[2]的比较序列的下标为()

    A. 9,5,4,2
    B. 10, 5, 3, 2
    C. 9, 6, 2
    D. 20, 10, 5, 3, 2
    解析

    没错,可能懂的人一眼就瞧出来了,选B;不懂的百度也能搜出来。当然网上也有不同的声音,有些童鞋感觉答案不对,在求指教!计算得出的是{10,5,2}。

    吓得我赶紧百度了一下百度百科(尽管有时候也挺扯淡的),百度百科给出的demo是:

    假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2.
    1.开始令front=0(指向3),end=7(指向88),则mid=3(指向36)。因为mid>x,故应在前半段中查找。
    2.令新的end=mid-1=2,而front=0不变,则新的mid=1。此时x>mid,故确定应在后半段中查找。
    3.令新的front=mid+1=2,而end=2不变,则新的mid=2,此时a[mid]=x,查找成功。
    如果要查找的数不是数列中的数,例如x=25,当第三次判断时,x>a[mid],按以上规律,令front=mid+1,即front=3,出现front>end的情况,表示查找不成功。

    如果按照案例,这位童鞋貌似算的不差也。然而他可能忽略了整数溢出的问题。

    举个例子,比如 int型数据,java里除号是下取整的。二分法,你mid有不断增加的可能,加法就容易溢出,超过int型数据的表达范围。

    比如计算2个32位的数字,加法结果为64位,但是制定了数据类型为32位,结果就只能读这个64位数的低32位,这就是溢出。

    有可能二分查找到数组的最后两个,如果数组的长度非常大,就有可能溢出。如果你要在数量为十亿级别数据库中查找,就要考虑这个溢出。

    所以最好使用公式 int mid= (end- front) / 2 + front,看来百度百科也不大靠谱哈。

    http://blog.52itstyle.com/archives/374/


    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    1

    主题

    0

    听众

    133

    金钱

    三袋弟子

    该用户从未签到

    沙发
    发表于 2017-03-03 10:20:44 |只看该作者
    谢谢楼主的分享!。。。
    回复

    使用道具 举报

    1

    主题

    0

    听众

    72

    金钱

    二袋弟子

    该用户从未签到

    板凳
    发表于 2017-03-03 18:42:18 |只看该作者
    好详细。
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    地板
    发表于 2017-03-03 21:38:42 |只看该作者

    来自苹果客户端????
    回复

    使用道具 举报

    1

    主题

    0

    听众

    72

    金钱

    二袋弟子

    该用户从未签到

    5#
    发表于 2017-03-04 10:40:49 |只看该作者
    admin 发表于 2017-3-3 21:38
    来自苹果客户端????

    对,我怎么了?
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    6#
    发表于 2017-03-04 10:42:08 |只看该作者

    苹果APP、 居然可以安装了??
    回复

    使用道具 举报

    1

    主题

    0

    听众

    72

    金钱

    二袋弟子

    该用户从未签到

    7#
    发表于 2017-03-04 12:16:20 |只看该作者
    admin 发表于 2017-3-4 10:42
    苹果APP、 居然可以安装了??

    可以的,不过要设置一下
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    8#
    发表于 2017-03-04 13:49:57 |只看该作者
    小白爱旅行 发表于 2017-3-4 04:16
    可以的,不过要设置一下

    我居然 不知道
    回复

    使用道具 举报

    5

    主题

    0

    听众

    316

    金钱

    四袋长老

    该用户从未签到

    9#
    发表于 2017-08-11 19:32:05 |只看该作者

    谢谢楼主的分享!。。。
    回复

    使用道具 举报

    3

    主题

    0

    听众

    178

    金钱

    三袋弟子

    该用户从未签到

    10#
    发表于 2018-03-18 10:38:41 |只看该作者
    这个楼主不简单
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表