二分查找模版
二分:精确查找
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int main() 7 { 8 int target,i,j,mid,r,l; 9 int a[]={1,1,2,2,3,5}; 10 cout<<a[5]<<endl; 11 target=3; 12 l=0;r=6; 13 while(r>=l) 14 { 15 mid=(r+l)>>1; 16 if(a[mid]==target) 17 break; 18 else if(a[mid]<target) 19 l=mid+1; 20 else 21 r=mid-1; 22 } 23 printf("%d\n",mid); 24 }
二分上限查找:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int main() 7 { 8 int target,i,j,mid,r,l; 9 int a[]={2,2,2,2,5,6}; 10 //cout<<a[5]<<endl; 11 target=2; 12 l=0;r=6; 13 mid=(l+r)>>1; 14 while(r>l) 15 { 16 if(a[mid]>target) 17 r=mid; 18 else 19 l=mid+1; 20 mid=(l+r)>>1; 21 } 22 printf("%d\n",mid); 23 }
二分下限查找:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int main() 7 { 8 int target,i,j,mid,r,l; 9 int a[]={1,2,2,2,3,6}; 10 //cout<<a[5]<<endl; 11 target=2; 12 l=0;r=6; 13 mid=(l+r+1)>>1; 14 while(r>l) 15 { 16 if(a[mid]<target) 17 l=mid; 18 else 19 r=mid-1; 20 mid=(l+r+1)>>1; 21 } 22 printf("%d\n",mid); 23 }
作 者:Angel_Kitty
出 处:https://www.cnblogs.com/ECJTUACM-873284962/
关于作者:阿里云ACE,目前主要研究方向是Web安全漏洞以及反序列化。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
欢迎大家关注我的微信公众号IT老实人(IThonest),如果您觉得文章对您有很大的帮助,您可以考虑赏博主一杯咖啡以资鼓励,您的肯定将是我最大的动力。thx.
我的公众号是IT老实人(IThonest),一个有故事的公众号,欢迎大家来这里讨论,共同进步,不断学习才能不断进步。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码),个人QQ和微信的二维码也已给出,扫描下面👇的二维码一起来讨论吧!!!
欢迎大家关注我的Github,一些文章的备份和平常做的一些项目会存放在这里。