Horspool算法就是一个字符串匹配的算法
这个算法是Boyer-Moore算法简化之后的算法,但是时间复杂度是没变的,只是更好理解了一些。
算法概括
Horspool算法是把文本T和模式P的开头字符对齐,从模式的最后一个字符开始比较,然后依次向模式左边推进比较。如果比较失败了,它把模式向后移。
算法的核心部分就是这个后移的过程。
如果采用蛮力的遍历方法,其实只是依次后推一位。但是这个算法相对精妙一点,他通过改变后推的位数以达到减少时间的目的。
那要怎么改变呢
- 如果匹配失败了的同时P最后一位对应的T元素不在P中,直接后推模式P的长度
- 如果成功匹配同样也是往后推模式P的长度

- 要是P最后一位对应的T元素在P中那么就往后推,推到两个元素对齐为止。

伪代码+C语言实现
伪代码

C语言实现
void horspool(char N[], char M[])<

5885

被折叠的 条评论
为什么被折叠?



