在二进制搜索中,我们通常具有低和高变量,通常有一个while循环来测试是否低<=高,如以下代码所示(来自Wikipedia:]]
int SortedArray[max] = {....} int BinarySearch (int key) { int start = 0; int end = max - 1; int mid; while (start <= end) { mid = (start + end) / 2; if (key == a[mid]) return mid; else if (key < a[mid]) end = mid - 1; else start = mid + 1; } return -1; }
[学习二进制搜索时,我总是被教导使用start <= end方法,但是当看到其他实现时,我看到很多人都在while(start
一个相对于另一个有优势吗?在我自己的本机实现中,我使用<=方法,但是当将其切换为
使用一个相对于另一个是否有经验法则?
在二进制搜索中,我们通常具有低和高变量,通常有一个while循环来测试是否低<=高,如以下代码所示(来自Wikipedia):int SortedArray [max] = {....} int ...
即使您的问题可能不是很清楚,我也可以推断您正在谈论二进制搜索的这种实现方式(在C中,来自维基百科):
int SortedArray[max] = {....}
int BinarySearch (int key)
{
int start = 0;
int end = max - 1;
int mid;
while (start <= end)
{
mid = (start + end) / 2;
if (key == a[mid])
return mid;
else if (key < a[mid])
end = mid - 1;
else start = mid + 1;
}
return -1;
}
对于low <= high
,将high
视为包含
high
是我们考虑的范围的一部分)。