SAP ABAP二分查找(binary search)实际问题的深度分析
在维护公司SAP的过程中,遇到一个问题,困扰了很久!
简单描述一下问题:(为了不牵扯公司业务,这是抽取问题)将主要的三个字段
存在一个内表TAB2,如图所示:
需要强调一下,真是的内表比TAB2要多很多字段,(这是重点)
首先对系统中真实的内表进行了排序,其中主要的三个字段的排序如TAB2所示,
(如果是内表TAB2,对COLUMN1排序的话,默认的COLUMN3也会自动安装升序排列):
SORT TAB2 BY COLUMN1 .
得到下图:
使用二分查找:
READ TABLE TAB2 WITH KEY COLUMN1 = '0800113864' COLUMN2 = '2012' COLUMN3 = '3018054318' BINARY SEARCH.
返回 SY-SUBRC = 8.
即查询没有相关数据!
这就是问题的情况所在!!
我发现问题的过程可以理解为如下步骤:
1. 首先定位到5条记录的中间那条记录,即第3条记录,然后对比COLUMN3。
2. 第3条记录的COLUMN3数据如果不等于 '3018054318' ,则从第3条至第5条记录的中间那条记录,即第4条记录,然后对比COLUMN3。
3. 第4条记录的COLUMN3数据如果不等于 '3018054318' ,则比较第5条记录然后对比COLUMN3。
4. 由于都没有等于 '3018054318' 的记录,则返回SY-SUBRC = 8。
解决此问题的关键:
在于对内表的排序,如果在
READ TABLE TAB2 WITH KEY COLUMN1 = '0800113864' COLUMN2 = '2012' COLUMN3 = '3018054318' BINARY SEARCH.
时候,使用到COLUMN1 = '0800113864' COLUMN2 = '2012' COLUMN3 = '3018054318' ,则对此系统中内表排序的时候需要依照此三个字段进行排序。
--------------------------------------------
解决疑惑,一点点开心。希望对读者有帮助。
SAP ABAP二分查找(binary search)实际问题的深度分析相关推荐
- 八、二分查找(Binary Search)
一.概述 二分查找(Binary Search,也称折半查找)--针对有序数据集合的查找算法 1.基本思想 类似分治思想,每次都通过跟区间的中间元素进行对比,将代查找的区间缩小为之前的一半,直到找到要 ...
- 二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现
问题背景 今年的实习生招聘考试,我出了一道二分查找(Binary Search)的题目.题目大意如下: 给定一个升序排列的自然数数组,数组中包含重复数字,例如:[1,2,2,3,4,4,4,5,6,7 ...
- ABAP性能优化之使用二分查找(Binary Search)选项
READ命令使用顺序查找数据表,这会降低处理速度.取而代之,使用binary search的附加命令,可以使用二分查找算法,可以帮助加快内表查找速度. 在使用binary search之前 必须首先将 ...
- SAPABAP性能优化技巧—使用二分查找(Binary Search)选项
READ命令使用顺序查找数据表,这会降低处理速度.取而代之,使用binary search的附加命令,可以使用二分查找算法,可以帮助加快内表查找速度. 在使用binary search之前必须首先将内 ...
- Leetcode中几道二分查找(Binary Search)的算法题总结
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.二分查找法的时间复杂度是对数级别的,O(lo ...
- 二分查找 Binary Search
明确循环不变量:变量的值可能在变化,但是它的含义是不变的 https://baike.baidu.com/item/循环不变量/8353186?fr=aladdin 如何写出正确的程序? 明确变量的含 ...
- 算法导论第2章(3) 二分查找 binary search
二分查找(分治法). 二分查找也是一种分治法的实现,每一次查找将数据分为两个部分,问题规模都减小一半.这样查找的时间复杂度为logN.因为其实查找过程建立了一棵有N个节点的二叉树,查找次数是这棵树的高 ...
- #2020寒假集训#二分入门(Binary Search)代码笔记
二分查找--Binary Search 原理就类似于下图啦(网上看到哒,忽略这个代价) 二分的时间复杂度一般是 O(logN) 的,超开心了有木有٩(๑>◡<๑)۶ 最简单来说,它可以分为 ...
- 数据结构与算法(八)二分搜索树(Binary Search Tree)
本文主要包括以下内容: 二分搜索树的基本概念 二分搜索树的基本操作 1. 插入 2. 删除 3. 查询 实现二分搜索树 二分搜索树的不足 二分搜索树的基本概念 二分搜索树(英语:Binary Sear ...
最新文章
- 希尔排序(Shell's Sort)的C语言实现
- mac设置截图和录屏的快捷键
- 知乎高赞回答:是否有必要系统学习概率图模型?
- 【转】mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
- drawable如何只让两个叫圆角_cad怎么使用圆角?cad的圆角怎么使用?
- java模式匹配_用Java匹配模式
- java Map统计字符串中元素的数量
- 集群IPtables转发与防火墙
- Java知识点汇总1
- 数据科学入门与实战:玩转pandas之三
- 用Eclipse制作博客
- 数字城市厦门智慧防汛平台测试计划【软件测试与工程】
- QQ邮箱无法接受Python SMTP/POP邮件解决方案
- 【百度编辑器】修改上传图片缩略图大小
- 解决Git使用出现git@githubcom Permission denied (publickey)
- mat1 and mat2 shapes cannot be multiplied ( )的解决
- linux之lsv—NAT配置
- <金屋藏书>app 技术支持
- java爬虫系列(二)——爬取动态网页
- 英语点读笔市场太内卷 飞扫翻译笔靠实力“超车”