查找2
- 格式:ppt
- 大小:549.50 KB
- 文档页数:47


2分查找算法二分查找算法,也称为折半查找算法,是计算机科学中一种常用的查找算法。
它的核心思想是将待查找的数据集合分成两半,然后通过与目标值的比较,确定目标值可能存在的范围,再逐步缩小范围,直到找到目标值或确定目标值不存在。
二分查找算法适用于有序的数据集合,可以快速定位目标值的位置,时间复杂度为O(logn)。
下面以二分查找算法为中心,详细阐述其原理和应用。
一、算法原理二分查找算法的原理非常简单,主要包含以下几个步骤:1.确定查找范围:将待查找的数据集合按照升序或降序排列,并确定查找范围的起始位置和结束位置。
2.计算中间位置:通过起始位置和结束位置计算出中间位置。
3.比较目标值:将目标值与中间位置的值进行比较。
-如果目标值等于中间位置的值,则查找成功,返回中间位置。
-如果目标值小于中间位置的值,则目标值可能在前半部分,将查找范围缩小到前半部分。
-如果目标值大于中间位置的值,则目标值可能在后半部分,将查找范围缩小到后半部分。
4.缩小查找范围:根据比较结果,缩小查找范围为前半部分或后半部分,并重复步骤2和步骤3,直到找到目标值或确定目标值不存在。
二、算法示例为了更好地理解二分查找算法,我们以一个具体的例子来说明:假设有一个按升序排列的数组[1,3,5,7,9,11,13,15,17, 19],我们要查找目标值为9的位置。
1.确定查找范围:起始位置为0,结束位置为9。
2.计算中间位置:(0+9)/2=4,中间位置为4。
3.比较目标值:目标值9大于中间位置的值7,所以目标值可能在后半部分。
4.缩小查找范围:将查找范围缩小到[9,11,13,15,17,19],起始位置更新为中间位置+1=5,结束位置不变。
5.重复步骤2和步骤3:计算新的中间位置(5+9)/2=7,中间位置为7。
目标值9小于中间位置的值15,所以目标值可能在前半部分。
6.缩小查找范围:将查找范围缩小到[9,11,13],起始位置更新为5,结束位置更新为中间位置-1=6。
由于数据源不宜动,如何实行用第2列查找第1列的对应内容。
张三 1李四 2王五 3查找2对应的李四:=Index(B:B,Match(2,A:A,))估计楼主要的是vlookup吧:比如在C1输入2,查找对应的李四=VLOOKUP(C1,IF({0,1},A1:A3,B1:B3),2,)=VLOOKUP(C1,IF({1,0},B1:B3,A1:A3),2,)你不传附件已经……呵呵,#N/A的错误是因为Match没找到位置产生的。
你B列的2是文本的吧。
改为数值或者Match("2",B:B,)另外,你试过我给你的那2个vlookup没?根据您的提示,按以下办法解决了。
=INDEX(A:A,MATCH(2,B:B,))另外,我用您的那2个vlookup中=VLOOKUP(C1,IF({0,1},A1:A3,B1:B3),2,)也是一种方案,但不知如何解读。
谢谢您IF({0,1},A1:A3,B1:B3)——{0,1}是一个1行2列的常量数组,用于if作判断时,所有非0的值认为是True,0为False所以if({0,1}——对应{False,True}而False就是B1:B3、True就是A1:A3,所以得到的是{B1:B3,A1:A3}这样一个2列的数组,相当于把B列放在A列的前边,vlookup对第一列满足要求的求得对应第2列的值。
另一个{1,0}的就是反过来了。
一样的道理。
=Index(B:B,Match(2,A:A,))如果直接输入以上的公式是不行的,请问,等号前应输入什么内容呢??谢谢!改为=INDEX(A:A,MATCH(2,B:B,))及可。