二分查找例题
#include <stdio.h>
int find(int x[],int t)
{
int left=0,mid,right=14;
while(left<=right)
{
mid=(left+right)/2;
if(t==x[mid]) {return mid;}
else
{
if(t>x[mid])
{left=x[mid]+1;}
else
{right=x[mid]-1;}
}
}
return -1;
}
main()
{ int a[15]={3,5,6,7,8,9,14,17,23,24,27,42,46,52,65};
printf("%d\n",find(a,24));
}
为什么输出的是-1
if(t>x[mid])
{left=x[mid]+1;}//应该是left=mid+1
else
{right=x[mid]-1;}//应该是right=mid-1