有序数组中找大于给定值的第一个元素,如果没有返回数组长度+1

实验证明,查找大于某个值的第一个数 和 查找某个值 都可以用一样的二分法

唯一的区别:
找某个值,如果找到了返回mid,找不到返回-1;

找大于某个值的第一个数,无论找没找到都返回low+1(二分到最后2种情况,一个是所有数都小于给定值,那么会在lowhighsize()-1处结束二分,返回low+1满足题设;
另一种情况存在这个数,但在最后一次二分时去找左区间从而失败
分析:只要是大于等于这个值就去左区间找mid,如果这个值在low处,也就是最左,会一直找左区间,最后一次在low-1处二分结束,返回low+1就是这个值
如果中途找到mid又小于这个值,去右区间找,如果这个值在high(最右)处,最后一次二分也会在high-1处结束,就是无论如何区间都会收缩到high<low这个结束条件结束,因为无论如何找mid都是满足vector[x]>=mid这个条件,最后返回low+1就是要的值

posted @ 2022-03-15 21:18  TomoyaAT  阅读(232)  评论(0)    收藏  举报