#include <stdio.h>
//计算数组中某一数的左边都比它小,右边都比它大,求此算法的时间复杂度
int search(int num[], int count)
{
int low,high,mid,i,flag=0;
low = 0;
high = count-1;
while(low<=high)
{
flag=0;
mid =(low + high)/2;
for(i=low;i<mid;i++)
{
if(num[i]>num[mid])
{
low = mid+1;
flag=1;
break;
}
}
if(flag==1)
continue;
for(i=mid+1;i<=high;i++)
{
if(num[i]<num[mid])
{
high = mid-1;
flag=1;
break;
}
}
if(flag==1)
continue;
if(flag==0)
{
return num[mid];
}
}
return -1;
}
int main()
{
int num[]={56,3,34,87,55,90,100,98,120};
int count=9;
int key=0;
key = search(num,count);
printf("key=%d\n",key);
return 0;
}
//计算数组中某一数的左边都比它小,右边都比它大,求此算法的时间复杂度
int search(int num[], int count)
{
int low,high,mid,i,flag=0;
low = 0;
high = count-1;
while(low<=high)
{
flag=0;
mid =(low + high)/2;
for(i=low;i<mid;i++)
{
if(num[i]>num[mid])
{
low = mid+1;
flag=1;
break;
}
}
if(flag==1)
continue;
for(i=mid+1;i<=high;i++)
{
if(num[i]<num[mid])
{
high = mid-1;
flag=1;
break;
}
}
if(flag==1)
continue;
if(flag==0)
{
return num[mid];
}
}
return -1;
}
int main()
{
int num[]={56,3,34,87,55,90,100,98,120};
int count=9;
int key=0;
key = search(num,count);
printf("key=%d\n",key);
return 0;
}