数据结构-旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,数组其最小值。例如数组[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;
}
原文地址:https://www.cnblogs.com/wn19910213/p/3718418.html