在具有升序和降序排序字段的内部表上进行二进制搜索

2020-09-20 14:08发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我的程序中有一个逻辑,其中内部表按升序和降序排序,如下所示:

将Itab按A B递增C D降序排列。

如果我仅读取前两个字段(如A B Binary Search的REAT itab)的表,可以使用二进制搜索吗? 我以为这应该可行,但是失败了。 你能帮我吗? 我知道已经有太多帖子发布了。 二进制搜索,但仍然找不到与此非常相似的内容。

谢谢。

此致

Rajarajan。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我的程序中有一个逻辑,其中内部表按升序和降序排序,如下所示:

将Itab按A B递增C D降序排列。

如果我仅读取前两个字段(如A B Binary Search的REAT itab)的表,可以使用二进制搜索吗? 我以为这应该可行,但是失败了。 你能帮我吗? 我知道已经有太多帖子发布了。 二进制搜索,但仍然找不到与此非常相似的内容。

谢谢。

此致

Rajarajan。

付费偷看设置
发送
6条回答
当学会了学习
1楼-- · 2020-09-20 14:44

您应该使用SORTED表作为首选项。 但是,如果您必须使用标准表,那么如果您阅读有关BINARY SEARCH的文档,您会看到它仅适用于升序。

SAP小菜
2楼-- · 2020-09-20 14:58

"我认为这应该可行,但是 失败。"

正如霍斯特所说,请务必事实,您确切期望什么,您究竟获得什么? 请举个例子!
huskylover
3楼-- · 2020-09-20 14:41

"我认为这应该可以,但是失败了。"

您的问题到底在哪里? 以下代码运行良好:

 DATA(rnd)= cl_abap_random_int => create(seed = + sy-uzeit
  分钟= 1
  最大= 100)。
数据: 行的开头, 我是TYPE I b类型i, c类型i, d类型i, 行结束, Itab像带空键的表一样。
做10000次 itab = VALUE#(基础itab (a = rnd-> get_next() b = rnd-> get_next() c = rnd-> get_next() d = rnd-> get_next()) )。 ENDDO。
按b升序c降序排序itab。
使用键a = 10 b = 10二进制搜索将表itab读入DATA(wa)。
BREAK-POINT。
三十六小时_GS
4楼-- · 2020-09-20 14:46

如Matthew先前所述:"如果您阅读了有关BINARY SEARCH的文档,您将看到它仅适用于升序"

95年老男孩
5楼-- · 2020-09-20 15:05

除了ABAP文档外,您还可以在此信息中找到有关二进制搜索的一些信息。 古代博客。 希望它会弄清楚。

渐行渐远_HoldOn
6楼-- · 2020-09-20 14:58

TCODE-ABAPDOCU说...

加法BINARY SEARCH生成表的二进制搜索,不是线性的。 对于大表(大约100个条目),这可以大大减少运行时间。 但是,必须按搜索关键字中指定的组件以升序对表格进行排序。 排序顺序的优先级必须与搜索键中组件的顺序完全匹配。 如果不满足此要求,通常将找不到正确的行。

一周热门 更多>