你真的会二分查找吗?—面试中的二分查找
Posted 深度沉迷学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你真的会二分查找吗?—面试中的二分查找相关的知识,希望对你有一定的参考价值。
今天想来说说二分查找,因为最近笔者的同学在面试时正好遇到了,而自己以前还真没认真研究过。
说起二分查找,对算法和数据结构比较熟悉的都知道这是一个复杂度为 O(logN)
的典型分治算法,它的用途是在有序数组中查找某个数是否存在。但就是这么听起来很普通的算法却常常很难完全写对。
据D.Knuth在《计算机程序设计的艺术 第3卷:排序和查找》书中指出,虽然二分查找1946年就公诸于世,但1962年才有人写出没有 bug 的二分查找程序。
除此之外,就连我们熟悉的 Java 语言里 JDK 的二分查找
java.util.Arrays.binarySearch
中也曾有一个隐藏了10年之久bug!(文末附bug链接)不过,这个bug已经不是什么新鲜事了,是 JDK5 时代的产物了,不过我们可以再来回顾一下,看看我们平常是不是就在写bug,是不是真应了那个表情包“哟,写bug呢”以上是关于你真的会二分查找吗?—面试中的二分查找的主要内容,如果未能解决你的问题,请参考以下文章