全部问题 > 当前问题

老师,为什么我这个程序返回的结果是7?

/*要使用二分查找,必须数组已经按照从大到小的顺序排好*/
#include <stdio.h>
int find(int a[],int t)
{
 int left=0,mid,right=14;
 while(1)
 {
  mid=(left+right)/2;
  if (t=a[mid])
      return mid;
  else
  {
   if (t>a[mid])
        left=mid+1;
   else right=mid-1;     /*这里不能在else外面加大括号*/
  }
 }
 return -1;
}
main()
{
 int a[15]={3,7,12,19,21,24,26,33,39,41,45,50,52,64,68};
 printf("%d\n",find(a,52));

}


ico 2017-9-5 22:01:37

共 2 个回答

ico 2017-9-5 22:03:17

image.png

ico 2017-9-5 22:13:42

我知道了,(捂脸,等号写成赋值了

问题来自: 二分查找