首页 > 其他分享 >Match第三个参数为-1时的计算规则(旧文迁移)

Match第三个参数为-1时的计算规则(旧文迁移)

时间:2023-08-13 17:55:23浏览次数:35  
标签:二分法 值比 位置 第三个 旧文 查找 B2 Match

以前学二分法的时候,一直以为,Match的第三个参数只要不为0就是以二分法规律进行查找的,可是今天测试了一下,发现人家用的居然是历遍法,规则是:

从上往下开始找,遇到比查找值小的前一个的位置,或者第一次出现与查找值相同的位置;如果查找值比查找范围内的第一个值大,则结果为NA;如果查找值比查找范围里所有的数都小,那就返回最后一个的位置。

 

为说明情况,示例中所有数据是0-9之间的整数。来看几个测试结果。

查找1:

从B2开始往下找,第一次出现1的位置是第六行,所以结果是6。

查找2:

同上,从B2开始往下找,第一次出现2的位置是第五行,所以结果是5。

查找3:

同上,从B2开始往下找,第一个出现3的位置是第二行,所以结果是2,后面再出现的3被忽略。

查找4:

从B2开始往下找,虽然第一次出现4的位置是第七行,但是在第二行出现了比4小的3,所以结果是3所在的前一行1。

查找5-8与查找4原因相同。

查找9:

B2比9小,于是笨电脑就以为下面的数据都比9小,于是返回NA。

如果查找值比查找范围里所有的数都小,那就返回最后一个的位置。

 

后来又编了段代码测试Match第三个参数分别为1和-1时的运行时间,发现差异真的很大,如果-1也是按二分法进行查找的话,运行速度不会是1的六倍。

目前这个只是从结果中反推出来的,并无任何源代码佐证,欢迎大家参与拍砖,谢谢。

标签:二分法,值比,位置,第三个,旧文,查找,B2,Match
From: https://www.cnblogs.com/officeplayer/p/17626908.html

相关文章

  • $elemMatch (query)
     https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/$elemMatch(query) TIPSeealso:$elemMatch(projection)Definition $elemMatch The $elemMatch operatormatchesdocumentsthatcontainanarrayfieldwithatleasto......
  • Cypher中多个match表示pipe效果 一个match查询结果给另外一个match使用
    https://neo4j.com/docs/cypher-manual/current/clauses/optional-match/OPTIONALMATCHIntroductionOPTIONALMATCH matchespatternsagainstagraphdatabase,justas MATCH does.Thedifferenceisthatifnomatchesarefound, OPTIONALMATCH willusea......
  • [SIGMOD 2020]In-Memory Subgraph Matching An In-depth Study
    In-MemorySubgraphMatching:AnIn-depthStudy一篇subgraphmatching的survey总结文章共分析了8中代表性的内存式子图匹配算法,在过滤、排序、扩展、优化四个方面做了对比。定义文中的重要符号表生成树的概念:生成树是一个连通图的最小连通子图问题定义子图同构问题是......
  • 【题解】 Pattern Matching in A Minor "Low Space" CCPC Mianyang 2022
    https://vjudge.net/contest/573644#problem/K字符串匹配,但卡空间。考虑哈希做法,不妨把\(s\)每\(20000\)个字符哈希成一个字符,于是\(s\)长度只有\(500\),可以跑个KMP。于是对于\(t\),我们只需要同时维护\(20000\)个KMP的指针。但如果字符串长度不是\(20000\)的倍......
  • 【ES】match和term的区别
    1、term查询是基于字段的精确匹配查询,不应用分词器。match查询是全文搜索查询,对搜索字符串和字段内容都应用相同的分词器,并使用布尔逻辑进行匹配。2、match:会使用分词器,对全文进行匹配搜索(模糊搜索),要注意的是,Keyword不会做分词的。所以如果是用在keyword上面,match和term......
  • BootstrapBlazor组件库,Menu组件NavLinkMatch导致的多个菜单项被被同时选中
    BootstrapBlazor组件库,Menu组件NavLinkMatch导致的多个菜单项被被同时选中BootstrapBlazor版本更新到7.9.0后,Menu组件出现首页同时被选中的情况默认首页/路径是选中状态,但是当选中其他路径后,首页路径还是选中状态。这是因为在BootstrapBlazor组件最新版中支持了一个新特性。可......
  • iptables: No chain/target/match by that name
    部署完docker后执行脚本报错在启动run.sh脚本后出现iptables:Nochain/target/matchbythatname.报错解决办法:重启dockerPS:重启docker后,通过以下命令可以查看最新防火墙配置:iptables-L应该看到iptables配置中ChainDocker设置已更新(与1中历史结果进行对比)原因解释重新......
  • 3DMatch
    详细描述链接:3DMatch数据集、github(介绍非常详细)官网主页:主页3DMatch数据集收集了来自于62个场景的数据,其中54个场景的数据用于训练,8个场景的数据用于评估,其具体名称查看train.txt和test.txt。3DMatch数据常用于3D点云的关键点,特征描述子,点云配准等任务。......
  • mongodb match 模糊匹配
    MongoDB的模糊匹配在使用MongoDB进行数据查询时,我们经常会遇到需要进行模糊匹配的情况。模糊匹配是指根据一定的规则,在数据库中查找与给定模式相匹配的数据。本文将介绍如何在MongoDB中进行模糊匹配,并提供相关的代码示例。1.模糊匹配基础在MongoDB中,模糊匹配通常使用正则表达式......
  • from difflib import SequenceMatcher
    difflib.SequenceMatcher是Python标准库中的一个模块,它用于比较两个序列之间的相似度。它可以用于字符串比较、文件比较等多种场景。matcher.ratio()在使用SequenceMatcher时,需要创建一个SequenceMatcher对象,并将要比较的两个序列传递给它。然后,可以调用ratio()方法来计算两个序列......