READ TABLE ..... BINARY SEARCH问题
Read Table 的语法很多,这里说一种特殊情况,Read Table 中查询的时候对标准内表经常有一种二分优化查找,用Binary search的时候首先必须要有查询条件;但如果查询条件满足的项目不至一条时,这时得到的是这些数据中索引排在最前面的数据;
如: 001 0001 20100101
001 0001 20100103
001 0001 20100105
READ TABLE itab INTO wa WITH KEY col1 = ''
col2 = ''
BINARY SEARCH.
这时得到的是第一条,001 0001 20100101 而不是 001 0001 20100103 这好像不符合二分法查找逻辑。按结果来看,这里的机制是先去匹配了查询条件,将匹配查询条件的数据全拉出来,然后取第一条,而不是按binary search 正常机制,先将low+high / 2位置的数据与条件匹配,成功就取出来。从结果来看,ABAP的二分机制实际是没用的。
然后做如下测试,先不对数据排序;
如: 001 0001 20100101
001 0002 20100103
001 0001 20100105
001 0003 20100105
001 0001 20100107
READ TABLE itab INTO wa WITH KEY col1 = ''
col2 = ''
BINARY SEARCH.
得到的结果是001 0001 20100101 也是索引最低数据;
所以最好的解释:ABAP的二分查找机制是按位置n/2,n/4、、、再一半、、、直到最后一条数据;在这个过程中得到匹配数据仍然不停止将继续二分查找,不断的用新的匹配数据去匹配旧的数据;因为新的数据索引肯定比旧的索引低;
READ TABLE ..... BINARY SEARCH问题的更多相关文章
- BINARY SEARCH in read table statement
1.for standard table, it must be sorted by search key. 2.for sorted table , binary search is used au ...
- Implement the hash table using array / binary search tree
今天在复习Arrays and String 时看到一个很有趣的问题.希望跟大家分享一下. Implement the hash table using array / binary search t ...
- 算法学习笔记之——priority queue、heapsort、symbol table、binary search trees
Priority Queue 类似一个Queue,但是按照priority的大小顺序来出队 一般存在两种方式来实施 排序法(ordered),在元素入队时即进行排序,这样插入操作为O(N),但出队为O ...
- Method for balancing binary search trees
Method for balancing a binary search tree. A computer implemented method for balancing a binary sear ...
- Binary search tree system and method
A binary search tree is provided for efficiently organizing values for a set of items, even when val ...
- Optimal binary search trees
问题 该问题的实际应用 Suppose that we are designing a program to translate text from English to French. For ea ...
- BINARY SEARCH 的一点说明
在sap 之abap语言中,有BINARY SEARCH这个查找条件.使用read table 来读取内表时,使用BINARY SEARCH可以大大的提高查找的效率,为什么呢?学过数据库的人会知道 ...
- [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法
二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...
- Leetcode 笔记 99 - Recover Binary Search Tree
题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped ...
随机推荐
- SVN简介
Subversion(SVN),是一个自由开源的版本控制系统,可以将数据恢复到早期版本,或者检查数据修改的历史,这些数据可以是源代码,也可以是其他类型的文件.SVN,是一个跨平台的软件,支持大多数常见 ...
- 2015年,从毕业到工作的几点感悟(Android开发新人)
锄禾日当午,汗滴禾下土. 2015年,从毕业到工作的几点感悟(Android开发): 多用三方类库:(成长经验:尽量不要自己手动实现网络上已经有的优秀开源类库的功能,例如: 网络请求:常见 ...
- Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage
<Windows Azure Platform 系列文章目录> 本文介绍的是由国内世纪互联运维的China Azure,相比国外的Global Azure.主要区别是存储账号的DNS地址不 ...
- Swift 3.0首个开发者预览版将在5月12日释出
Swift团队在博客中宣布Swift 3.0语言首个开发者预览版将于5月12日释出,正式版将在4-6周之后推出.开发者预览阶段并无确定的更新周期和计划,不过Swift团队称努力将其控 制在4-6周内. ...
- 【Swift学习】Swift编程之旅(一)
学习一门新语言最经典的例子就是输出“Hello World!” print("Hello World!") swift就是这样来输出的. 如果你使用过其他语言,那么看上去是非常的熟 ...
- SQL_递归查询(复杂查询示例)
需求: 一篇文章里有很多评论,每个评论又有很多回复评论,要求: 页面将文章展示出来,且文章的主评论按照评论时间分页展示,回复评论的评论完全展示在每个主评论下面,且按照回复时间排序 最终查询结果SQL查 ...
- HTTPS能有效保护用户隐私
HTTPS就等于HTTP加上TLS(SSL),HTTPS协议的目标主要有三个: http://hovertree.com/menu/webfront/ 数据保密性.保证内容在传输过程中不会被第三方查看 ...
- grep命令的使用
grep是UNIX和LINUX中使用最广泛的命令之一.grep允许对文本文件进行模式查找.如果找到匹配模式, grep打印包含模式的所有行.grep支持基本正则表达式,也支持其扩展集.grep有三种变 ...
- 通过python将图片生成字符画
基础知识: 1.python基础知识 快速学习链接:https://www.shiyanlou.com/courses/214 2.linux命令行操作 快速学习链接:https://www. ...
- 免安装的tomcat双击startup.bat后,启动窗口一闪而过,而且tomcat服务未启动。
免安装的tomcat双击startup.bat后,启动窗口一闪而过,而且tomcat服务未启动. 原因是:在启动tomcat是,需要读取环境变量和配置信息,缺少了这些信息,就不能登记环境变量,导致了t ...