Interview Question
Software Engineer / Developersint FindRotationIndex(int a[], int start, int end)
{
if(a[start]<=a[end])
return 0;
int mid = (start+end)/2;
if(a[mid] > a[mid+1])
return mid+1;
if(a[mid-1] > a[mid])
return mid;
if(a[mid+1] > a[end])
FindRotationIndex(a,mid+1,end);
else
FindRotationIndex(a,start,mid-1);
}
int findSeg(int* A, int len){
- anwing October 21, 2010int l = 0;
int r = len;
if (A[len-1] > A[0])
return 0;
while (l<r){
int mid = (l+r)/2;
if (mid == 0 || mid == len-1 || A[mid] < A[mid+1] && A[mid] < A[mid-1])
return mid;
else if (A[mid] < A[0])
r = mid;
else
l = mid+1;
}
return -1;
}