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