Я думаю, что я в бесконечной петле в своем двоичном коде поиска. Я передаю empID, поэтому он может вернуть индекс для середины, но ничего не возвращает.Что не так с моим двоичным кодом поиска java?
public int binSearch(int empID)
{
int first = 0;
int last = empCount - 1;
int found = 0;
int mid = 0;
while (first <= last && found == 0)
{
mid = (first + last)/2;
if (empNums[mid] == empID)
{
found = 1;
}
else
{
if (empNums[mid] < empID)
{
first = mid + 1;
}
else
{
last = mid - 1;
}
}
while (found == 0)
{
mid = -1;
}
}
return mid;
}
Используйте отладчик. Пройдите через код. –
'while (found == 0) mid = -1;' вы определенно не хотите этого. –