Jan 6, 2009

How do you perform binary search on a rotated sorted array? eg., 75, 77, 85, 91, 10, 19, 26, 29, 33,45, 67 I guess binary search will work. 75, 77, 85

How do you perform binary search on a rotated sorted array?
eg., 75, 77, 85, 91, 10, 19, 26, 29, 33,45, 67
I guess binary search will work.
75, 77, 85, 91, 10, 19, 26, 29, 33,45, 67
search first element which < 75,
while( low != high )
{
mid = ( low + high )/2
if( A[ mid ] > a[low] )
{
low = mid + 1;
}
else
{
pos = mid;//memory the position but do NOT break
high = mid;
}
}
//does not work for 3412
Or
Int f(int* a, int low, int up)
{
If(low+1=up) return up;
Int mid=(low+up)/2;
If(a[low]>=a[mid]) return f(a,low,mid);
Return f(a,mid,up);
}
//different from find median from two sorted array, where k is approaching to 1

No comments:

Post a Comment