二分查找

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int ab[1000];
//二分查找 
int find(int l,int r,int s)  
{
while(l<=r)
{
int  mid=(l+r)>>1;
if(ab[mid]==s)  return 1;
if(ab[mid]>s)  r=mid-1; //注意这里不能写r=mid..否则死循环。
else  l=mid+1;
}
return 0;
}
int main( )
{
  int i;
  for(i=1;i<=60;i++)
   ab[i]=2*i*i+4*i+2;
   if(find(1,60,18))
   printf("YES\n");
   else
   printf("NO\n");
   system("pause");
   return 0;
}

 

posted on 2011-05-03 00:46  more think, more gains  阅读(169)  评论(0编辑  收藏  举报

导航