2014-09-22 88 views
0

作爲標題,蠻力,卡普拉賓,克努 - 莫里斯普拉特,博伊爾摩爾,...或者呢? Pascal中的Pos()函數有多複雜?什麼算法用於Pascal中的Pos()函數?

+2

可能取決於編譯器 – thang 2014-09-22 02:17:29

+3

您將不得不指定您指的是哪個pascal編譯器。一般來說,我會認爲蠻力,如果你想要一個特定的算法,你將不得不自己找一個庫或代碼。 – 2014-09-22 07:37:05

回答

2

在Delphi中,它是手工編譯的彙編程序蠻力。可能在D2006和更高版本中由fastcode項目重做。在Turbo Pascal中,它也是手動編譯的彙編程序,但是較舊(可能是rep scasb)

在免費的Pascal上,它使用indexbyte(),它是一個體繫結構相關基元「在內存塊中搜索字節」,由雙字節掃描實現。

IOW它只是掃描第一個相等的字符,所以我認爲這是你的意思與蠻力。

可以使用各種Delphi Boyer Moore實現,以防萬一您必須搜索較大的文本,但由於它們的額外內存分配,這些通常在短字符串上得分較差。