二进制搜索与排序条目一起工作。根据算法,如果条目数(n)的数量均为算法,则首先搜索N/2个条目。如果是密钥,则将其返回,否则检查键是小于或大于N/2位置。如果较小,则搜索将从索引1继续延长到N/2 -1,丢弃其余的一半。同样,该过程重复直到找到搜索键。如果有奇数条目,则中间位置为n-1/2。
所以我的问题是是否有重复的条目,我们已经按顺序排序了11122233。2 = 4。但是第四位不是1,因此搜索继续从1到4位。现在,N/2 =第二位置为1,它是钥匙。因此,搜索停止在第二个索引。因此返回第二个索引。
但是,在带有读取表二进制搜索的ABAP中,第1个条目(即索引1)将返回。为什么这样?请解释。
因为已经指定并实现了算法:
使用添加二进制搜索时,如果有多个命中 (由于表中的不完整搜索键或重复条目), 根据主要索引中行的顺序,第一个命中 退回。这是最低行号的行。
背后的基本原理是您希望一种语言来表现出稳定的行为 - 在表末端添加一些完全无关的条目,不应更改READ TABLE
语句的定位。