zoukankan      html  css  js  c++  java
  • lower_bound upper_bound

    这两个函数针对有序数列进行二分查找

    lower_bound返回第一个大于等于 x 的元素的位置的迭代器(或指针)

    upper_bound返回第一个大于 x 的元素的位置的迭代器(或指针)

    若序列从大到小排列 则可以分别求得 第一个小于等于 x 的元素位置 和 第一个小于x 的元素位置

    根据习惯从1记录数组

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 using namespace std;
     5 int a[200];
     6 int n,k;
     7 bool cmp(int a,int b){return a>b;}
     8 int main()
     9 {
    10     scanf("%d",&n);
    11     for(int i=1;i<=n;i++)
    12         scanf("%d",&a[i]);
    13     scanf("%d",&k);
    14     int pos1=lower_bound(a+1,a+n+1,k)-a;
    15     int pos2=upper_bound(a+1,a+n+1,k)-a;
    16     cout<<pos1<<" "<<a[pos1]<<endl;
    17     cout<<pos2<<" "<<a[pos2]<<endl;
    18     sort(a+1,a+n+1,cmp);
    19     for(int i=1;i<=n;i++) cout<<a[i]<<" ";
    20     cout<<endl;
    21     pos1=lower_bound(a+1,a+n+1,k,greater<int>())-a;
    22     pos2=upper_bound(a+1,a+n+1,k,greater<int>())-a;
    23     cout<<pos1<<" "<<a[pos1]<<endl;
    24     cout<<pos2<<" "<<a[pos2]<<endl;
    25     return 0;
    26 }
    27 /*
    28 7
    29 2 3 4 8 9 10 12
    30 4
    31 */
  • 相关阅读:
    Milking Time---poj3616(简单dp)
    elasticsearch-入门(一)
    Spring Cloud Sleuth(十四)
    Spring Cloud Stream(十三)
    Spring Cloud-Bus(十二)
    Spring Cloud-config(十一)
    mac Gitblit安装
    git学习笔记
    java陷阱之spring事物管理导致锁无效
    Spring Cloud-Zuul(十)
  • 原文地址:https://www.cnblogs.com/kylara/p/9922949.html
Copyright © 2011-2022 走看看