全部问题 > 当前问题

二分查找例题

#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 

1021329223 2017-2-28 19:19:50

共 2 个回答

qqq 2017-3-1 13:45:37

if(t>x[mid])

{left=x[mid]+1;}//应该是left=mid+1

else

{right=x[mid]-1;}//应该是right=mid-1


1021329223 2017-3-1 13:48:40

回复 qqq:额   看错了   谢谢

问题来自: 二分查找