У OP, я подозреваю, есть круговой буфер фиксированного размера. Два условия поиска происходят.
Один, когда буфер заполняется, и один, когда буфер заполняется, где произошла перестановка и происходит перезапись предыдущих хранилищ.
Первый случай - это линейный поиск с начальным «интервалом» в нуле и, по-видимому, конечным интервалом записывается / поддерживается.
Второй случай сложнее. Начальный слот циркулирует, так как предыдущие хранилища перезаписаны. Конечный слот также циркулирует, только одна позиция после начального слота.
Чтобы выполнить линейный поиск по этим движущимся индексам, необходим перевод, чтобы поместить нулевой начальный слот и размер буфера конечного слота.
Как работает этот алгоритм, еще предстоит определить.