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; }