#include<stdio.h>
int Min(int *number,int length)
{
if(number==NULL||length<=0)
return 0;
int start=0;
int end=length-1;
int mid=start;
while(number[start]>=number[end])
{
if(end-start==1)
{
mid=end;
break;
}
{
start=mid;
}
if(number[mid]<=number[end])
{
end=mid;
}
}
return number[mid];
}
int main()
{
int arr[7]={6,7,1,2,3,4,5};
int length=sizeof(arr)/sizeof(arr[0]);
int min=Min(arr,length);
printf("%d",min);
return 0;
}
int Min(int *number,int length)
{
if(number==NULL||length<=0)
return 0;
int start=0;
int end=length-1;
int mid=start;
while(number[start]>=number[end])
{
if(end-start==1)
{
mid=end;
break;
}
int mid=(start+end)/2;
//如果start,end,mid三个值相同则顺序排序
if(number[start]==number[end]&&number[start]==number[mid])
{
return MinOrder(number,start,end);
}
if(number[mid]>=number[start]){
start=mid;
}
if(number[mid]<=number[end])
{
end=mid;
}
}
return number[mid];
}
int MinOrder(int *number ,int start,int end)
{
int result=number[start];
for(int i=start+1;i<=end;i++)
{
if(result>number[i])
{
result=number[i];
}
}
return result;
}
int main()
{
int arr[7]={6,7,1,2,3,4,5};
int length=sizeof(arr)/sizeof(arr[0]);
int min=Min(arr,length);
printf("%d",min);
return 0;
}