На сайте Боба Стаута Snippets есть пара реализаций Бойера-Мура-Хорспула (включая воскресный вариант).Реализация Рэя Гарднера в BMHSRCH.C безошибочно, насколько я знаю 1 , и определенно самая быстрая из тех, что я когда-либо видел или слышал.Однако это не так легко понять - он использует довольно сложный код, чтобы сделать внутренний цикл максимально простым.Я могу быть предвзятым, но я думаю, что моя версия 2 в PBMSRCH.C немного легче понять (хотя определенно немного медленнее).
1 В его пределах - он был изначально написан для MS-DOS и мог использовать переписывание для сред, которые предоставляют больше памяти.
2 Это так или иначе было помечено как "Pratt-Boyer-Мур ", но на самом деле это воскресный вариант Бойера-Мура-Хорспула (хотя я не знал об этом в то время и не публиковал его, я думаю, что я действительно изобрел его примерно за год до воскресенья).