В собственном бинарном поиске мы выбираем 1/2 в качестве средней точки, чтобы отрезать половину «рабочей нагрузки» в линейном поиске и возможных ответов.Однако, если временная сложность функции check_mid (mid) не является фиксированной, будет ли 1/2 по-прежнему справедливой точкой для поиска?
Например, в задаче поиска первой неверной версии.скажем, временная сложность check_mid (mid) равна O (mid), длина массива равна N. Когда мы установим среднюю точку на 1/2, временная сложность линейного поиска в левой части будет 1/8 *N ^ 2, и правая часть будет 3/8 * N ^ 2.Таким образом, в аспекте «рабочая нагрузка» разделение несправедливо, будет ли фактор, который больше 1/2, будет лучшей средней точкой в этой ситуации (1 / sqrt (2) или 2/3)?
Короче говоря, моя путаница заключается в том, что мы избавляемся от половины возможных случаев, или дела занимают половину «рабочей нагрузки»?Допустим, «рабочая нагрузка» -T означает линейную проверку всех возможных случаев.Если мы отрежем половину T в каждой рекурсии, худшая временная сложность будет log2 (T).Но если мы отрежем половину возможных случаев, худшая временная сложность не будет равна log2 (T), когда функция check_mid (mid) не зафиксирована.
Существует ли более эффективный фактор поиска, чемсредняя точка для бинарного поиска?
этот вопрос похож, но в его ответе не учитывалась временная сложность check_mid (mid).