В таких случаях нужно понять, каким свойствам обобщенный тип должен соответствовать, чтобы алгоритм применялся корректно. Если просмотреть все необходимые операции, то здесь мы сравниваем значения, определяя, является ли средний элемент искомым. Если нет, то дополнительно определяем, меньше ли искомый элемент, чем средний.
Так это просто перевод? Хотел уже похвалить. И еще, не двоичный поиск, а бинарный.