As far as I test, there is no any bug point tested. However, I wonder that if there is a problem with the usage of arr.Length or arr.Length - 1.
Further, as to the boundaries like begin <= end with end = mid - 1 or begin < end with end = mid as in the codes.
// size is array length
private static int BinarySearch(int[] arr, int element)
{
int begin = 0;
int end = arr.Length;
for (; begin < end ;)
{
int mid = begin + (( - begin + end) / 2);
if (arr[mid] == element) return mid;
if (arr[mid] > element)
{
// in left
end = mid;
}
else
{
begin = mid + 1;
}
}
return -1;
}
// size is array length - 1
private static int BinarySearch(int[] arr, int element)
{
int begin = 0;
int end = arr.Length - 1;
for (; begin < end ;)
{
int mid = begin + (( - begin + end) / 2);
if (arr[mid] == element) return mid;
if (arr[mid] > element)
{
// in left
end = mid;
}
else
{
begin = mid + 1;
}
}
return -1;
}
Lengthproperty. In java it would belength. \$\endgroup\$