二分查找
#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) 编辑 收藏 举报