徒手实现lower_bound和upper_bound
Posted TQCAI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了徒手实现lower_bound和upper_bound相关的知识,希望对你有一定的参考价值。
STL中lower_bound和upper_bound的使用方法:STL 二分查找
lower_bound:
int obj=3; int l=0; //初始化 l ,为第一个合法地址 int r=10; //初始化 r , 地址的结束地址 int mid; while(l<r) { mid=(l+r)/2; if(arr[mid]<obj){ l=mid+1; }else{ r=mid; } }
upper_bound:
int obj=3; int l=0; //初始化 l ,为第一个合法地址 int r=10; //初始化 r , 地址的结束地址 int mid; while(l<r) { mid=(l+r)/2; if(arr[mid]<=obj){ l=mid+1; }else{ r=mid; } }
(将上文的lower_bound的 < 替换为 <= 即可)
为便于记忆可以修改判断条件。
lower_bound:
int l=0; //初始化 l ,为第一个合法地址 int r=10; //初始化 r , 地址的结束地址 int mid; while(l<r) { mid=(l+r)/2; if(arr[mid]>=obj){ r=mid; }else{ l=mid+1; } }
upper_bound:
int l=0; //初始化 l ,为第一个合法地址 int r=10; //初始化 r , 地址的结束地址 int mid; while(l<r) { mid=(l+r)/2; if(arr[mid]>obj){ r=mid; }else{ l=mid+1; } }
以上是关于徒手实现lower_bound和upper_bound的主要内容,如果未能解决你的问题,请参考以下文章