旋转数组中求最小数

int min(int arr[],int n)
{
    int i=0,j=n-1;
    if(arr[i]<arr[j])
        return arr[i];

    int x=arr[0];
    while(i<j)
    {
        int m=i+(j-i)/2;
        if(arr[m]>x)
            i=m+1;
        else
            if(arr[m]<x)
            j=m;
            else  // 无法确定在第一个递增和第二递增的时候,进行顺序查找
            {
                int min=arr[i];
                for(int k=i+1;k<=j;k++)
                    if(arr[k]<min)
                        min=arr[k];
                return min;
            }
    }
    cout<<"拐点:"<<arr[i]<<endl;
    return x>arr[i]?arr[i]:x;
}

 

posted on 2013-07-23 11:23  dyc0113  阅读(121)  评论(0编辑  收藏  举报

导航