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

    lower_bound()返回这个有序序列中第一个大于等于value的位置

    upper_bound()返回这个有序序列中第一个大于vlaue的位置


    具体STL库好像用的二分查找

    举个例子

    代码

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<algorithm>
    #include<cstdlib>
    #include<map>
    #define N 4020
    #define INF 0x3f3f3f3f
    #define MOD 10000
    using namespace std;
    int main()
    {
        int arr[20];
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>arr[i];
        sort(arr,arr+n);
        for(int i=0;i<n;i++)
            printf("%3d ",i);
        puts("");
        for(int i=0;i<n;i++)
            printf("%3d ",arr[i]);
        puts("");
        int l,u,t=10;
        while(t--)
        {
            int val;
            scanf("%d",&val);
            l=lower_bound(arr,arr+n,val)-arr;//如果都在这个数大于所有数,则返回的是最后一个加1
            u=upper_bound(arr,arr+n,val)-arr;
            printf("l=%d ,u=%d
    ",l,u);
        }
    }

    输入数据

    10 

    1 2 8 6 7 56 75 32 12 92

    下标 0     1    2    3    4     5       6     7      8       9

    序列 1     2    6    7    8    12    32    56    75    92


    查找 98

    返回l=10  r=10

    查找92

    返回l=92  r=10

    查找0

    返回l=0     r=0

    查找8

    返回l=4    r=5;

    这个数据表明若查找的值在有序序列最大值之外 会返回一个指向(数组末尾+1)指针


  • 相关阅读:
    JavaScript解析顺序和变量作用域
    JS-BOM
    原生对象-Array
    JavaScript01
    css3动画
    scc的使用
    CSS3学习总结
    Js数组方法大全
    JavaScript判断变量是否为数组
    浏览器兼容性问题及解决方案
  • 原文地址:https://www.cnblogs.com/dchnzlh/p/9780068.html
Copyright © 2011-2022 走看看