Двоичный поиск принимает наихудший случай O (log N). В вашем случае это означает от 1 до 30 сравнений. В лучшем случае первое сравнение уже правильное и возвращает напрямую.
Вы пытаетесь измерить время, необходимое для выполнения 1-30 сравнений, поэтому, по сути, времени вообще нет. Я немного удивлен, что вы получаете что-нибудь кроме 0 и 1e-06. Кажется, это точность ваших часов. Вероятно, ваш процессор работает более чем в 1000 раз быстрее.
Вы должны выполнить все операции oop, чтобы выполнить много поисков, а затем усреднить их по каждому запросу, чтобы получить более высокую точность. Вы также тестируете только нахождение одного указанного значения c. Вы тщательно продумали этот выбор, чтобы он был худшим? Если нет, то почему бы не выполнить поиск по каждому значению в векторе один раз?
Мое предложение будет использовать 3 l oop:
N = 1
Outer loop: loop until the time difference between start and finish is >1s.
N = 2 * N
start clock
Middle loop: repeat N times
Inner loop: search for every value in the vector once
end clock here
Моя лучшая догадка относительно того, почему вывод занимает экспоненциально каждый раз дольше это getVector(i)
занимает это время. Вы должны инициализировать весь вектор, и каждый проход в два раза больше. Так что это отчасти ожидается. Но это, вероятно, можно оптимизировать много. Скорее всего, вы увеличиваете вектор, а не инициализируете его нужным размером.