zoukankan      html  css  js  c++  java
  • 二分模版练习

    二分初学者一定要认真熟练将以下模版练习并将逻辑理解清楚

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int a[10]={1,3,5,7,9,9,9,11,13,15};
     4 //二分查找1  返回>=p的第一数下标,相当于jlower_bound() 
     5 int bs1(int p){ 
     6     int l=0, r=10-1;
     7     int ans=-1;
     8     while(l<=r){
     9         int mid=(l+r)/2;
    10         if(a[mid]>=p){
    11             ans=mid;
    12             r=mid-1;
    13         }
    14         else
    15             l=mid+1;
    16     }
    17     return ans;//返回值为-1表示数列中所有数都<P
    18 }
    19 //二分查找2  返回>p的第一数下标,相当于upper_bound()
    20 int bs2(int p){ 
    21     int l=0, r=10-1;
    22     int ans=-1;
    23     while(l<=r){
    24         int mid=(l+r)/2;
    25         if(a[mid]>p){
    26             ans=mid;
    27             r=mid-1;
    28         }
    29         else
    30             l=mid+1;
    31     }
    32     return ans;//返回值为-1表示数列中所有数都<P
    33 }
    34 //二分查找3  返回<p的最大数值下标
    35 int bs3(int p){ 
    36     int l=0, r=10-1;
    37     int ans=-1;
    38     while(l<=r){
    39         int mid=(l+r)/2;
    40         if(a[mid]<p){
    41             ans=mid;
    42             l=mid+1;
    43         }
    44         else
    45             r=mid-1;
    46     }
    47     return ans;//返回值为-1表示数列中所有数都>P
    48 }
    49 //二分查找4  返回<=p的最大数值下标
    50 int bs4(int p){ 
    51     int l=0, r=10-1;
    52     int ans=-1;
    53     while(l<=r){
    54         int mid=(l+r)/2;
    55         if(a[mid]<=p){
    56             ans=mid;
    57             l=mid+1;
    58         }
    59         else
    60             r=mid-1;
    61     }
    62     return ans;//返回值为-1表示数列中所有数都>P
    63 }
    64 int main()
    65 {
    66     
    67     while(1){//供测试函数使用 
    68         int x;
    69         cin>>x;
    70         cout<<bs4(x)<<endl;
    71     }
    72     
    73     return 0;
    74 }

     视频学习链接:https://www.bilibili.com/video/av925583617/

  • 相关阅读:
    H5相关网址
    ASP.NET MVC Razor视图引擎攻略
    深度解析 ASP.NET MVC 5
    .Net MVC 框架基础知识
    java SDK服务端推送 --极光推送(JPush)
    Nexus Repository Manager OSS 3.x 安装配置
    java项目中使用ffmpeg剪辑部分视频
    net 异步与同步
    IDEA把spring-boot项目打包成jar
    开放api接口签名验证
  • 原文地址:https://www.cnblogs.com/tflsnoi/p/13206085.html
Copyright © 2011-2022 走看看