Алгоритм поиска паттерна в неупорядоченной последовательности?
Ну в общем-то, как заметил Александр, вы хотите чуда, но алгоритм можно оптимизировать, если есть какая-либо закономерность, которая позволяет предсказать,  в каких областях может быть искомый паттерн. 
Также если местоположение начала паттерна не может быть произвольным (то есть паттерн может начинаться в 1, 11, 21 байте, но не может начинаться в 37 к примеру), то время поиска можно сократить менее, чем в 10 раз, сначала поискав все первые байты, а потом проверив эти места уже полностью. 
Также можно поискать закономерность в этом паттерне. 
Но в целом, если это будет регулярной задачей, прикрутите что-нибудь для первоначальной обработки массива.
Спасибо Александр и x67 Реализовал вашу идею. Вот небольшой отчет производительности на массиве данных размером чуть меньше 1 000 000 запущенный 1000 раз. Время указываю суммарное, за все 1000 запусков.Линейный поиск - 9000-9300 мсРеализация Александр - 4100-3900 мсДоработка (с предварительной проверкой на хотя бы один 0 вокруг buffer[i]) - 3100-2900 мс