在旋转数组中寻找最小值

 

 

#include <iostream>
using namespace std;

#define LEN 12

int FindMinInRotateArray(int *arr, int len, int *min)
{
    if (arr == NULL || len <= 0 || min == NULL)
    {
        return -1;
    }

    if (len == 2)
    {
        *min = arr[1];
        return 1;
    }

    int mid = len/2;
    if (arr[0] < arr[mid])
    {
        FindMinInRotateArray(arr + len/2, len - len/2, min);
    }
    else
    {
        FindMinInRotateArray(arr, len/2 + 1, min);
    }
    return 1;
}

int main()
{
    int a[LEN] = {3, 4, 5, 6, 7, 8, 9, 10, -1, 0, 1, 2};
    int min = 0;
    FindMinInRotateArray(a, LEN, &min);
    cout<<"The min we've found is : "<<min<<endl;
    return 1;
}

 

posted on 2012-11-21 22:46  kkmm  阅读(264)  评论(0编辑  收藏  举报