|
本帖最后由 e表格学习 于 2016-8-12 15:58 编辑
方版所阐述的二分法(找了半天链接,也没有找到)仅适用于查找区域为升序的模糊查找(查找不大于查找值的最大值),对于查找区域为降序的模糊查找(查找不小于查找值的最小值)就不适用了,比如MATCH函数的-1方式查找。
“二分法”的完整内容应该是:
二分法=升序二分法+降序二分法
降序二分法与升序二分法的主要不同是:
查找值大于中位值时,以中位作为边界,继续在其左侧取新的中位值继续对比
查找值小于中位值时,以中位作为边界,继续在其右侧取新的中位值继续对比
查找值等于中位值时,依次判断其左侧数值是否继续相等,直到不相等(包括碰到与查找值类型不同的值、错误值等情况)时返回最后一个相等的数值
当中位位置与边界重叠时,中止对比,此时如果查找值不大于中位值,则返回中位值;如果查找值大于中位值,则返回中位左侧数值。如果左侧数值不存在,返回#N/A
当中位值为异常值(如与查找值类型不同的值、错误值等)时,忽略异常值,在其左侧继续对比
测试.zip
(6.37 KB, 下载次数: 197)
2016\8\12楼主总结:
1.关于MATCH的-1查找策略,请移步42楼.
2.方版的二分法,其查找策略是建立于默认升序排序基础上的,但是这并不妨碍将其运用于降序或乱序,只是结果可能匪夷所思罢了.
如果在实际工作问题中,您想查找不大于查找值的最大值,请务必将查找区域升序排序,否则,二分法查找结果可能会让您匪夷所思.
迄今为止,Excel并没有规定建立于默认降序排序基础上的二分法及其查找策略.MATCH的-1查找是从上到下(或从左到右)的遍历查找.虽然我们对MATCH的-1查找只能"按部就班"遍历,没有使用二分法而"义愤填膺"(同样排了序,凭什么只能LOOKUP\VLOOKUP\HLOOKUP\MATCH升序查找有高效二分法查找)!
|
|