Binary Search
1. Searching an Element in a Rotated Sorted Array
int r_binary_search(int arr[], int size, int key)
{
int left = 0;
int right = size - 1;
int mid;
while(left <= right)
{
mid = (left + right)/2;
if(arr[mid] == key)
return mid;
if(arr[mid] >= arr[left])
{
if(key < arr[mid] && key >= arr[left])
right = mid - 1;
else
left = mid + 1;
}
else
{
if(key > arr[mid] && key <= arr[right])
left = mid + 1;
else
right = mid - 1;
}
}
return -1;
}
2. fin min in a rotated array.
int find_min(int arr[], int size)
{
int left = 0;
int right = size - 1;
int mid;
while(left < right)
{
mid = (left + right)/2;
if(arr[left] <= arr[right])
return left;
else if(arr[mid] >= arr[left])
left = mid + 1;
else
right = mid;
}
}