zoukankan      html  css  js  c++  java
  • lower_bound和upper_bound

    lower_bound函数原型:

    template<classForwardIterator,classT>
    ForwardIterator lower_bound(ForwardIteratorfirst,ForwardIteratorlast,constT&val);

    
    返回非递减序列(first,last)中第一个大于等于val的元素位置。
    

    upper_bound函数原型:

    template<classForwardIterator,classT>
    ForwardIterator upper_bound(ForwardIteratorfirst,ForwardIteratorlast,constT&val);
    返回非递减序列(first,last)中第一个大于val的元素位置。

    例如序列:1,2,3,3,3,4,5

    对于val=3,lower_bound(3)返回位置2,upper_bound(3)返回位置5。相减获得元素值为val的元素个数。

    lower_bound

    int lower_bound(int *array,int size, int val)
    {
        int first,middle,half,len;
        first=0;
        len=size;
        while(len>0)
        {
            half=len>>1;
            middle=first+half;
            if(array[middle]<key)
            {
                first=middle+1;
                len=len-half-1;
            }
            else
                len=half;
        }
        return first;
    }
    upper_bound

    int upper_bound(int *array,int size, int val)
    {
        int first,middle,half,len;
        first=0;
        len=size;
        while(len>0)
        {
            half=len>>1;
            middle=first+half;
            if(array[middle]>key)
                len=half;
            else
            {
                 first=middle+1;
                 len=len-half-1;
            }
               
        }
        return first;
    }
    


  • 相关阅读:
    面向对象三大特性五大原则
    如何快速的浏览项目
    网页测速
    截取字符串
    iOS-tableView点击下拉菜单
    iOS_block内存分析
    iOS_ @property参数分析
    iOS-设计模式之Block
    iOS-设计模式之代理反向传值
    iOS-设计模式之通知
  • 原文地址:https://www.cnblogs.com/Tuesdayzz/p/5758867.html
Copyright © 2011-2022 走看看