精确二分搜索与非精确二分搜索
Posted zousantuier
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精确二分搜索与非精确二分搜索相关的知识,希望对你有一定的参考价值。
精确二分搜索目的在于确定有没有
代码如下
int l = 0, r = list.size() - 1; while(l <= r){ mid = l + (r - l) / 2; if(list[mid] == target) return mid; else if(list[mid] < target) l = mid + 1; else r = mid - 1; } return -1;
而非精确的二分搜索在于如果没有搜索到目标位置,也可以将小于目标的最大值的下标返回
//mid即为小于tar的最大值的下表 //注意mid为-1和list.size() - 1的时候 int l = 0, r = list.size() - 1; int mid = l + (r - l) / 2; while(l <= r){ mid = l + (r - l) / 2; if(list[mid] == target){ return true; }else if(list[mid] < target){ l = mid + 1; }else{ r = mid - 1; if(l > r) mid--; } }
以上是关于精确二分搜索与非精确二分搜索的主要内容,如果未能解决你的问题,请参考以下文章