二分查找练习

#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;
}

  

posted on 2016-11-24 15:20  itdef  阅读(370)  评论(0编辑  收藏  举报

导航