二分查找算法適用於在已經排好序的數組或者二叉樹中,由於比較簡單,故直接上代碼。
代碼如下:
//遞歸實現
int binarySearch_recursion(const int arr[], const int left, const int right, const int key)
{
if(left > right)
return -1;
else
{
int mid = left + (right-left)/2;
if(arr[mid] == key)
return mid;
else if(arr[mid] > key)
return binarySearch_recursion(arr, left, mid-1, key);
else
return binarySearch_recursion(arr, mid+1, right, key);
}
}
int binarySearch_recursion(const int arr[], const int size, const int key)
{
return binarySearch_recursion(arr, 0, size-1, key);
}
//非遞歸實現
int binarySearch_norecursion(const int arr[], const int size, const int key)
{
int left = 0;
int right = size - 1;
int mid = -1;
while(left <= right)
{
mid = left + (right-left)/2;
if(key == arr[mid])
return mid;
else if(key < arr[mid])
right = mid - 1;
else
left = mid + 1;
}
}