题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,数组其最小值。例如数组[3,4,5,1,2]是[1,2,3,4,5]的一个旋转,其最小值为1
/* 剑指offer面试题8. 这段代码针对一般情况,但是如果数组是[1,0,1,1,1]或者是[1,1,1,0,1] 这个代码就有很大的漏洞,这时候需要考虑这种情况,需要利用顺序查找。 */ #include <iostream> using namespace std; int min(int* a,int low,int high){ int mid = low; while(high >= low){ mid = (low + high)/2; if((high - low) == 1){ mid = high; break; } if(a[mid] >= a[low]){ low = mid; } if(a[mid] <= a[high]){ high = mid; } } return a[mid]; } int main() { int a[] = {7,8,9,3,4,5,6}; int n = sizeof(a)/sizeof(*a); int m = min(a,0,n-1); cout << m; return 0; }