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

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

时间:2023-11-01 11:35:20浏览次数:38  
标签:二分法 值比 位置 第三个 旧文 查找 B2 Match

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

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

 

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

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

查找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的六倍。

Match第三个参数为-1时的计算规则(旧文迁移)_代码测试_02

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



标签:二分法,值比,位置,第三个,旧文,查找,B2,Match
From: https://blog.51cto.com/u_9928055/8120226

相关文章

  • 【论文阅读笔记】【SAM相关】 Matcher: Segment Anything with One Shot Using All-Pu
    读论文时思考的问题论文试图解决什么问题?如何更好地建立视觉方面的fundationmodel如何建立一个模型,使得其在没有人类输入信号的情况下(这里主要是one-shotimage)能更好地挖掘SAM的能力,实现相同的语义元素(好像不一定要求是一个实例)的分割(并提取割出来的物体的语义信息?)......
  • 使用Matcher进行正则匹配-解析模板参数
    一、介绍Matcher是正则表达式的一部分,它用于执行正则表达式的匹配操作。Matcher通常与Pattern类一起使用,Pattern用于编译正则表达式,而Matcher用于在文本中搜索和匹配该正则表达式。二、具体用途1)文本匹配:可以使用 Matcher 来查找文本中是否包含与正则表达式模式匹配的子字符......
  • How to use regular expression to match a special meta tag in html string using j
    HowtouseregularexpressiontomatchaspecialmetataginhtmlstringusingjavascriptAllInOnemetatagerror❌consthtml=`<!DOCTYPEhtml><htmllang="en"><head><metaname="twitter:card"content......
  • Matching Network算法概述
    什么是MatchingNetwork1.论文地址:MatchingNetworksforOneShotLearning2.简介:基于MetricLearning部分思想,使用外部记忆来增强网络,提高网络的学习能力。3.创新点借鉴了注意力和外部记忆方面的经验来搭建网络基于meta-learning用task来训练,而不是metric-learning输入......
  • 【LCT、树状数组】CF1137F Matches Are Not a Child's Play
    哈人*3400,是不是贺过了个1F(?单点编号\(\tomax+1\),动态维护prufer序列删除了哪些点。看似不可做,但是不难发现我们一个点被更改其他点的相对次序不会改变,反而\(x\tomax\)这条链的删除次序到了最后面。然后我们以权值最大点为根,不难发现每次只是对根到该点的链更改了......
  • 题目:交换两个变量的值,不能使用第三个变量。
    1、加减思想#include<stdio.h>intmain(){   inta=3,b=5;   printf("交换前:a=%db=%d\n",a,b);   a=a+b;   b=a-b;   a=a-3;   printf("交换后:a=%db=%d\n",a,b);   return0;}存在问题:整形溢出2、按位异或(二进制)intmain(){......
  • C语言-将两个文件中的字符串拼接在一起写入第三个文件中
    C语言-将两个文件中的字符串拼接在一起写入第三个文件中步骤1.先创建两个文件A.txt和B.txt,分别写入123,456步骤2.编写程序#include<stdio.h>#include<stdlib.h>#include<string.h>//将A.txt和B.txt中的字符串拼接,放入C.txt中intmain(){ FILE*fa,*fb,*fc; inti,j,......
  • [论文阅读] Exact Feature Distribution Matching for Arbitrary Style Transfer and
    ExactFeatureDistributionMatchingforArbitraryStyleTransferandDomainGeneralization论文源码:https://github.com/YBZh/EFDM1.Introduction传统的特征分布匹配方法通常假定特征遵循高斯分布,通过匹配特征的均值和标准差来实现。然而,现实世界中的数据特征分布通常较......
  • 绕过preg_match函数并使用本地命令RCE
    来自[FBCTF2019]RCEService:题目本身不难,但这个知识点值得一提。首先打开是一个输入JSON格式的cmd执行,随便输了输看看回显:我输了个{"cmd":"ls"}嗯?直接出目录了?按道理来说应该有过滤吧。果然输入ls/就:显然把斜杠过滤了,试了试其他的语句,发现cat啥的常规的全给ban了,就只有l......
  • Error: Vue packages version mismatch: - [email protected] (D:\前端\vue01\node_module
    Error:Vuepackagesversionmismatch:[email protected](D:\\前端\vue01\node_modules\vue\dist\vue.runtime.common.js)[email protected](D:\前端\vue01\node_modules\vue-template-compiler\package.json)根据提示信息,是版本不匹配的问题,可以直接找到vu......