使用BinarySearch插入点

use*_*593 -4 delphi delphi-xe6

如何使用二进制搜索找到插入点,以便我可以将项目插入到已排序的数组中?默认设置TArray.BinarySearch不提供此类功能.

MBo*_*MBo 5

TArray.BinarySearch确实提供了所需的功能 - 它FoundIndex为插入找到了正确的index():

如果BinarySearch找到元素则返回True,否则返回False.
如果找到,FoundIndex包含Item的从零开始的索引.
如果未找到,则FoundIndex包含大于Item的第一个条目的索引.

示例:对于(2,4,7)数组和请求值5,它将找到索引2 - 您必须扩展数组,将数组的其余部分从第2个位置移开,然后将5插入第2个位置.

  • 需要注意的是:如果需要插入和删除项目,则更容易使用`TList <Integer>`,它具有内置支持. (3认同)
  • @ user3841593:"太有限了?" `TList <T>`具有比`TArray <T>`更多的内置功能.你会以什么方式认为它"太有限"? (2认同)