Я хочу оптимизировать этот линейный поиск:
static int
linear (const int *arr, int n, int key)
{
int i = 0;
while (i < n) {
if (arr [i] >= key)
break;
++i;
}
return i;
}
Массив сортируется, и функция должна возвращать индекс первого элемента, который больше или равен ключу. Они невелики (ниже 200 элементов) и будут подготовлены один раз для большого количества поисков. Элементы массива после n-го могут при необходимости быть инициализированы чем-то соответствующим, если это ускоряет поиск.
Нет, двоичный поиск не разрешен, только линейный поиск.
Изменить. Все мои знания об этой теме теперь суммируются в этом сообщении в блоге.