Я укажу, что копируя части массива в новый меньший массив, вы снижаете ценность выполнения бинарного поиска. Хорошо реализованный бинарный поиск выполняется за O (log (n)), тогда как то, что вы здесь делаете, выполняется за O (n). Вместо этого, если вы хотите реализовать бинарный поиск рекурсивно, вам нужно просто передать исходный массив и верхнюю и нижнюю границы, которые вы сейчас рассматриваете.
При этом причина того, что ваш код не является '• Даже получение правильного ответа, а тем более быстрого его получения, связано с несколькими различными ошибками.
- Предполагается, что ваш массив предварительно отсортирован в порядке возрастания (двоичный поиск не может работать привсе, если ваш массив не отсортирован по порядку), тогда у вас есть случай, когда средняя точка больше, чем цель, и случай, когда средняя точка меньше, чем цель, обратная.
- Ваш код для копирования верхнего уровняиз массива имеет несколько проблем. Напоминаем, что если вы копируете части своего массива, то вы неправильно выполняете бинарный поиск. Тем не менее, ваш код копирования массива для этого случая записывает только в начальный индекс нового массива
[0]
вместо того, чтобы идти по новому массиву и старому массиву одновременно.