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




posted @ 2011-12-14 17:33  Sw_R  阅读(126)  评论(0编辑  收藏  举报