The Binary search requires an ordered list.
Iterative Algorithm
int find (const apvector
// pre: list is sorted in ascending order
//post: ITERATIVE binary search will return the index of the target element, else -1
{
int mid;
int first = 0;
int last = list.length( ) -1;
while ( first <= last )
{
mid = (first + last) / 2;
if ( list[mid] == target )
return mid;
if ( list[mid] > target )
last = mid - 1;
else first = mid + 1;
}
return -1;
}
Recursive Algorithm
int find (const apvector
// pre: list is sorted in ascending order
//post: RECURSIVE binary search will return the index of the target element, else -1
{
if (first > last)
return -1;
int mid = (first + last) / 2;
if (list[mid] == target)
return mid;
if (list[mid] < target)
return find(list, target, mid+1, last);
return find(list, target, first, mid-1);
}