• 二分查找的 上边界和下边界 以及最接近上边界和最接近下边界的例子


    模板来自 www.acwing.com

    // 23132423543426561213.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    
    #include <iostream>
    #include <vector>
    
    
    using namespace std;
    
    
    int test1[] = {1,3,5,5,5,5,5,5,5,11,12,16,99,100};
    int test2[] = { 1,1,2,2,3,3,3,3,4,7,8,8,9,9,9,9,11,12,14,18,99,100 };
    
    
    void fun1(int arr[],int len )
    {
        int l = 0; int r = len - 1;
    
        while (l < r) {
            int mid = l + r >> 1;
            if (arr[mid] >= 5) r = mid;
            else l = mid + 1;
        }
        cout << "l = " << l << ".r = " << r << ". arr[l] = " << arr[l] << ". arr[r] = " << arr[r] << endl;
    
    
        l = 0; r = len  - 1;;
    
        while (l < r) {
            int mid = (l + r + 1) >> 1;
            if (arr[mid] <= 5) l = mid;
            else r = mid - 1;
        }
    
        cout << "l = " << l << ".r = " << r << ". arr[l] = " << arr[l] << ". arr[r] = " << arr[r] << endl;
    
    }
    
    
    int main()
    {
        //fun1(test1,sizeof(test1)/sizeof(test1[0]));
    
        fun1(test2, sizeof(test2) / sizeof(test2[0]));
    
    
        return 0;
    }
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    Github地址
    第三次冲刺12.16
    第三次冲刺12.07~12.15
    第二次冲刺11.24~12.03
    第十天
    照片
    最终总结
    app的推广
    第三个Sprint冲刺事后诸葛亮报告
    第三个Sprint团队贡献分
  • 原文地址:https://www.cnblogs.com/itdef/p/13162048.html
Copyright © 2020-2023  润新知