清华学弟函数攻略:一文讲透WPS表格函数二分法(下)
创作者俱乐部成员
教程(上)集链接:
在前面,我们已经分析了LOOKUP进行二分法查找的原理。有一个地方我还没有给大家呈现:为什么被查找的数组一定要升序排序?如果不升序,又会怎么样?
大家可以试着做一个小练习:当有源数据表中对应关系是乱序的时候,查找98,会返回那个等级?检验一下你对二分法原理的掌握。
你的答案是:___________。
因此,正确答案是:第7级。你答对了吗?
我们再看一个源数据表降序排序的效果:
你的答案是:___________。
因此,正确答案是:第1级。你答对了吗?
通过上面两个例子可以发现:
对于LOOKUP函数,大部分情况下,要尊重它的查找规则,将源数据表的被查找数组,升序排序。对于LOOKUP函数来说,降序也是一种乱序。
下面我们再回到(上)集中最开始的内容,看看XLOOKUP函数的第5、第6个选用参数,究竟强在哪里:
[匹配模式]中,扩展了更多的方式,还支持通配符匹配。
[搜索模式]中,扩展了多种查找方式,以契合更多排序方式的源数据表。
纵观查找函数大家庭:LOOKUP、VLOOKUP、HLOOKUP、XLOOKUP
XLOOKUP函数以其多向量方向、多查找个数、动态数组灵活呈现形式、多匹配模式、多搜索模式综合考量,可谓查找函数大家庭中,当之无愧的金牌大师。
****(分割线)****
最后我们来看一看,二分法的优势在哪里,为什么后台要使用这种算法:
答案:减少后台计算量,提高计算效率。
我们回顾几次原理分析,在源数据表中,被查找数组的单元格数量为15个,需要比较4次。
这是因为:
一共15个元素
第1轮比较第8个元素,无论结果如何,都会淘汰8个,还剩7个;
第2轮比较第4个元素,无论结果如何,都会淘汰4个,还剩3个;
第3轮比较第2个元素,无论结果如何,都会淘汰2个,还剩1个;
第4轮比较唯一一个元素,返回这个元素(这个元素值<=查找值)或者返回上面那个(这个元素值>查找值),肯定能得出结果。
但如果对于一个拥有15个元素的升序数组,我拿着一个查找值从头扫到尾,我每次比较只能淘汰1个元素,最多可能要比较14次(虽然也可能1次就比出来),但整体正态分布来看,二分法的4次远小于逐个比较的数学期望值,真的可以极大降低内存量,而且数据越多,二分法的优势越明显。
以上两期内容就是我关于WPS表格函数二分法的一点愚见,欢迎各位社区大佬批评指正。
下面是今天练习文档的链接:
【金山文档】 一文讲透WPS表格函数二分法
https://kdocs.cn/l/cnmNsFwMn87y
(上、下)集的文档是同一个,大家下载一个即可。
为不影响社区其他用户查看初始文件,我关闭了在线协作的功能。大家可以将文档下载到本地,自由操作练习哦!
如果你觉得今天的教程对你有帮助,欢迎在下方为我点一颗小红心💖💖💖哦!
同时,你也可以将感悟或者收获在下方留言,或者在评论区留下你的困惑,我会挑选有代表性的问题,推出更多的教程跟大家分享哦!
祝大家国庆节快乐!
欢迎大家阅读我的其他文章:
✅【函数攻略】系列
✅【动态数组灰度测试】系列
动态数组行业案例:使用SEQUENCE/FILTER函数 × 动态数组 搞定三大高频场景
动态数组行业案例:使用SORTBY函数 × 动态数组 制作多功能成绩单
动态数组行业案例:使用UNIQUE函数 × 动态数组 多场景全能应用
动态数组行业案例:使用SEQUENCE函数 × 动态数组 生成动态序号
动态数组行业案例:使用XLOOKUP × 动态数组 实现金牌查找(上)
动态数组行业案例:使用XLOOKUP × 动态数组 实现金牌查找(下)
动态数组行业案例:使用RANDARRAY × 动态数组 解决授课案例问题
动态数组行业案例:使用INDIRECT函数 × 动态数组制作二级下拉菜单
✅【WPS AI办公】系列
✅【菁培班-函高一期PK赛】系列
✅【学习感悟】系列
WPS函数专家
创作者俱乐部成员