徒手實現lower_bound和upper_bound
阿新 • • 發佈:2018-03-15
ref obj AR bsp cnblogs www. else 實現 判斷
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:
intl=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