Хм, а почему бы просто НЕ ВЫЗЫВАТЬ свою функцию поиска?
public int insertBS(long value) {
int curIn = find(value); // find where it goes (binary search)
for(int k=nElems; k>curIn; k--) // move bigger one up
a[k] = a[k-1];
a[j] = value; // insert it
nElems++; // increment size
}
Таким образом, когда вы оптимизируете / измените свою функцию поиска, ваша функция вставки тоже будет работать быстрее!
Как примечание, я думаю, что ваша функция поиска не даст вам ожидаемого поведения, как написано.Если у вас есть список [0,1,4,5,9] и я ищу 7, я получу индекс nElems (5), который может быть неверно истолкован, поскольку значения в индексах от 0 до 4 все меньше, чем7. Кажется немного шатким.