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 */
  • 相关阅读:
    HDFS文件操作(基本文件命令)
    <a> 标签
    css text-overflow
    zepto.js 打包自定义模块
    CSS3 box-sizing
    CSS3 Filter
    JQ 导出 Excel
    outline css2
    iphone 操作手势种类
    动手写一个简单的Web框架(模板渲染)
  • 原文地址:https://www.cnblogs.com/kylara/p/9922949.html
Copyright © 2011-2022 走看看