Я хочу сделать бинарный поиск в сортированном массиве. Без рекурсии.
int BinarySearch(int arr[], int low, int high, int key)
{
int mid; // = (low + high)/2;
int done = 0;
if (high < low)
return -1;
mid = (low + high)/2;
while (!done)
{
if(key==arr[mid])
return mid;
else if (key > arr[mid])
mid = ((mid+1) + high) / 2;
else if (key < arr[mid])
mid = (low + (mid-1)) / 2;
}
return -1;
}
Если искомый элемент (key) есть в массиве (arr) то все нормально, функция возвращает индекс массива. Но если элемента нет в массиве я кручусь все время в цикле (while (!done)).
Я что то никак не соображу по какому условию выйти из цикла.