Скажем, у меня есть 2 массива int, отсортированных по возрастанию. и я пытаюсь найти, есть ли значение из массива A, совпадающее со значением в массиве B, при этом временная сложность Big-O равна n. Сначала я думал о линейном поиске, но это было невозможно, потому что мне нужен был вложенный цикл for. Моя другая идея - попытаться использовать бинарный поиск и добавить к нему цикл for. Будет ли это работать?
Так как ...
for (int i = 0;i<B.length(), i++) {
BinarySearch(A[0..N-1], value, low, high) {
if (high < low)
return -1 // not found
mid = low + (high - low) / 2
if (A[mid] > value)
return BinarySearch(A, value, low, mid-1)
else if (A[mid] < value)
return BinarySearch(A, value, mid+1, high)
else
return mid // found
}
}
это не полный код, я просто скопировал его из вики в качестве примера. Я иду в правильном направлении?