如何使二进制搜索方法返回false
本文关键字:返回 false 方法 搜索 何使 二进制 | 更新日期: 2023-09-27 18:22:37
我正在C#中进行二进制搜索方法的练习,如果数字在列表中,它会返回true,但如果数字不在列表中则无法返回false。如果最后条件是UB=LB,但SearchKey不等于MP,我曾想过做其他事情。有什么建议吗?
static bool search(List<int> numbers, int searchKey)
{
int UB = numbers.Count - 1;
int LB = 0;
int MP = (UB + LB) / 2;
bool done = false;
do
{
if (numbers[MP] > searchKey)
{
UB = MP - 1;
MP = (UB + LB) / 2;
}
else if (numbers[MP] < searchKey)
{
LB = MP + 1;
MP = (UB + LB) / 2;
}
else if (numbers[MP] == searchKey)
{
done = true;
return true;
}
else
{
done = true;
return false;
}
} while (!done);
return false;
}
在while循环while (!done && LB < UB);
中添加此条件
当没有项目被搜索时,它会运行无限时间。