2020-09-20 14:08发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我的程序中有一个逻辑,其中内部表按升序和降序排序,如下所示:
将Itab按A B递增C D降序排列。
如果我仅读取前两个字段(如A B Binary Search的REAT itab)的表,可以使用二进制搜索吗? 我以为这应该可行,但是失败了。 你能帮我吗? 我知道已经有太多帖子发布了。 二进制搜索,但仍然找不到与此非常相似的内容。
谢谢。
此致
Rajarajan。
您应该使用SORTED表作为首选项。 但是,如果您必须使用标准表,那么如果您阅读有关BINARY SEARCH的文档,您会看到它仅适用于升序。
"我认为这应该可行,但是 失败。"
"我认为这应该可以,但是失败了。"
您的问题到底在哪里? 以下代码运行良好:
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。
如Matthew先前所述:"如果您阅读了有关BINARY SEARCH的文档,您将看到它仅适用于升序"
除了ABAP文档外,您还可以在此信息中找到有关二进制搜索的一些信息。 古代博客。 希望它会弄清楚。
TCODE-ABAPDOCU说...
加法BINARY SEARCH生成表的二进制搜索,不是线性的。 对于大表(大约100个条目),这可以大大减少运行时间。 但是,必须按搜索关键字中指定的组件以升序对表格进行排序。 排序顺序的优先级必须与搜索键中组件的顺序完全匹配。 如果不满足此要求,通常将找不到正确的行。
最多设置5个标签!
您应该使用SORTED表作为首选项。 但是,如果您必须使用标准表,那么如果您阅读有关BINARY SEARCH的文档,您会看到它仅适用于升序。
"我认为这应该可行,但是 失败。"
正如霍斯特所说,请务必事实,您确切期望什么,您究竟获得什么? 请举个例子!"我认为这应该可以,但是失败了。"
您的问题到底在哪里? 以下代码运行良好:
如Matthew先前所述:"如果您阅读了有关BINARY SEARCH的文档,您将看到它仅适用于升序"
除了ABAP文档外,您还可以在此信息中找到有关二进制搜索的一些信息。 古代博客。 希望它会弄清楚。
TCODE-ABAPDOCU说...
加法BINARY SEARCH生成表的二进制搜索,不是线性的。 对于大表(大约100个条目),这可以大大减少运行时间。 但是,必须按搜索关键字中指定的组件以升序对表格进行排序。 排序顺序的优先级必须与搜索键中组件的顺序完全匹配。 如果不满足此要求,通常将找不到正确的行。
一周热门 更多>