Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Find the minimum element.
You may assume no duplicate exists in the array.
int ruler;
int binaryFind(int num[], int n, int beg, int end) {
if (beg == end) {
return num[beg];
}
int mid = (beg + end) / 2;
if (num[mid] >= ruler) {
return binaryFind(num, n, mid + 1, end);
}
return binaryFind(num, n, beg, mid);
}
int findMin(int num[], int n) {
if (n == 1 || num[0] < num[n - 1]) {
return num[0];
}
ruler = num[0];
return binaryFind(num, n, 0, n - 1);
}