Некорректно работает бинарный поиск
Есть массив с 10 числами, необходимо ввести с клавиатуры еще k чисел, с помощью бинарного поиска найти эти числа в массиве и вывести на экран встречаются ли они в нём, если нет, то пропустить. Код почему-то находит только 1 и 3.
#include <iostream>
using std::cout;
using std::cin;
int main()
{
int msv [] {1, 3, 5, 7, 9, 11, 13, 15, 17};
int k;
cout << "Введите кол-во чисел: "; cin >> k;
int *msvk {new int [k] {}};
for (int i = 0; i < k; i++)
{
cout << "Введите элемент под номером " << i+1 << ": "; cin >> msvk[i];
}
int mid;
for (int i = 0; i < k; i++)
{
int left = 0;
int right = 8;
while(true)
{
mid = (right - left)/2;
if (msvk[i] == msv[mid])
{
cout << "Число " << msvk[i] << " повторяется" << '\n';
break;
}
if (msvk[i] < msv[mid])
right = mid - 1;
else
left = mid + 1;
if (left > right)
break;
}
}
return 0;
}
Источник: Stack Overflow на русском