Pascal中的Pos()函数使用了什么算法?

时间:2014-09-22 02:16:12

标签: algorithm time-complexity pascal string-search

作为头衔,Brute Force,Karp-Rabin,Knutt-Morris-Pratt,Boyer Moore,......还是?而Pascal中Pos()的复杂功能是什么?

1 个答案:

答案 0 :(得分:2)

在Delphi中,它是手工编译的汇编程序蛮力。可能在D2006和更高版本通过fastcode项目重做。在Turbo Pascal中,它也是手动编码的汇编程序,但是较旧(可能是代表scasb)

在Free Pascal上,它使用indexbyte(),这是一个与体系结构相关的原语“在内存块中搜索字节”,由双向扫描实现。

它只是扫描第一个相等的字符,所以我认为这就是你用蛮力的意思。

可以使用各种Delphi Boyer Moore实现,以防你需要搜索更大的文本,但由于他们额外的内存分配,这些通常在短字符串上得分很差。