#include <iostream>
using namespace std;
int arr1[] = { 1,2,3,4,5,6,7,8,9 };
int arr2[] = { 1,1,1,2,3,3,4,6,98 };
int MyBinarySearch(int array[], int begin, int end, const int value)
{
while (begin <= end)
{
int middle = (begin + end) / 2;
if (value > array[middle])
return MyBinarySearch(array, (middle+1), end, value);
else if (value < array[middle])
return MyBinarySearch(array, 0, (middle-1), value);
else
return middle;
}
return -1;
}
int MyBinarySearch1(int array[], int length,const int value)
{
int begin = 0;
int end = length - 1;
while (begin <= end)
{
int middle = (begin + end) / 2;
if (value == array[middle])
return middle;
else if (value > array[middle])
begin = middle + 1;
else
end = middle - 1;
}
return -1;
}
int main()
{
cout << MyBinarySearch(arr1, 0, 8, 7) << endl;
cout << MyBinarySearch(arr2, 0, 8, 98) << endl;
cout << MyBinarySearch(arr1, 0, 8, 1) << endl;
cout << MyBinarySearch(arr2, 0, 8, 1) << endl;
cout << endl;
cout << MyBinarySearch(arr1, 0, 8, 77) << endl;
cout << MyBinarySearch(arr1, 0, 8, 0) << endl;
cout << MyBinarySearch(arr2, 0, 8, 7) << endl;
cout << MyBinarySearch(arr2, 0, 8, 99) << endl;
cout << MyBinarySearch(arr2, 0, 8, 0) << endl;
cout << endl;
cout << MyBinarySearch1(arr1, 9, 7) << endl;
cout << MyBinarySearch1(arr2, 9, 98) << endl;
cout << MyBinarySearch1(arr1, 9, 1) << endl;
cout << MyBinarySearch1(arr2, 9, 1) << endl;
cout << endl;
cout << MyBinarySearch1(arr1, 9, 77) << endl;
cout << MyBinarySearch1(arr1, 9, 0) << endl;
cout << MyBinarySearch1(arr2, 9, 7) << endl;
cout << MyBinarySearch1(arr2, 9, 99) << endl;
cout << MyBinarySearch1(arr2, 9, 0) << endl;
cout << endl;
return 0;
}