面试--二分查找

参加面试的时候常被提问到一个问题--请你解释一下二分查找

我们用联想记忆法:该算法有两个名字(二分查找、折半查找)、优点三个(比较次数少、查找速度快、平均性能好)、缺点两个(待查找表为有序表、插入删除困难)。用数字表示就是232,图形表示就是=≠=(形容为 此二分非彼二分 )

那么我们在面试的时候就可以这样表述:(面试的时候最好自带纸笔,原因不解释)用笔写出刚刚的=≠=的公式(原因是联想记忆更容易回忆起以前的内容),指着左边的等号跟面试官说“此二分非彼二分,二分查找不是简单的分两份,然后执行查找;它有两个名字,一个叫二分查找、另一个叫折半查找;就是在一个有序数组中,取数组中的中间值和要找的值进行比较,当要查找的值大于中间值,则在右边的区间继续取一个中间值和要比较的数进行比较。当找查找的值小于中间值时则反之,直至最后要查找的值和中间值相同,则说明找到该值。该算法有三个优点(指向中间的不等号),一是比较次数少、二是查找速度快、三是平均性能好。因为次数少了,速度自然快了,平均性能当然也就好了。但是呢,它也有两个缺点(指向右边的等号),其一是必须有序,没序的话,分成两份比较中间值的话没有意义,而排序本身是一件很耗时的运算;其二是增删困难,因为增删都要移动大量的结点。因此二分查找适用于那种一经建立就很少改动、而又经常需要查找的线性表(顺序存储结构)”到这里,如果能表达到这个程度已经是非常不错的了,但是如果能举个实际例子就更好了,因为面试官问你的初衷就是想知道你懂不懂,会不会用。而且本人写这篇的初衷也是想让阅读的人跟本人一样,从理解到能实际运用,这样对你、对我、对面试官都是一件好事不是吗?

原文地址:https://www.cnblogs.com/ylHe/p/9477750.html