zoukankan      html  css  js  c++  java
  • 二分

    ///查找第一个大于等于的元素
    ///以下两种方式都可以用lower_bound和upper_bound来实现。
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int a[10]= {1,2,2,2,3,3,3,5,6,7};
    int main()
    {


        int k;
        printf("1,2,2,2,3,3,3,5,6,7 ");
        while(~scanf("%d",&k))
        {
            int l=0,r=9;
            while(l<r)
            {
                int mid=(l+r)>>1;
                if(a[mid]<k)///即找到之后怎么做,若找第一个大于等于的就在找到等于号后继续向前找,如果小于了返回前一个
                {
                    l=mid+1;
                }
                else
                {
                    r=mid;
                }
                /*if(a[mid]>k){///找到大于查找元素的第一个,如果找不到返回最后一个位置这样就有可能找到元素位置就是想找元素位置。
                    r=mid;
                }
                else{
                    l=mid+1;
                }
                        }
                    }
                        printf("%d ",l);*/
                // int ans;
                ///ans=lower_bound(a,a+10,k)-a;///减a为位置,函数返回为地址

            }
            printf("%d ",l);
        }
    }

  • 相关阅读:
    sql server报【将截断字符串或二进制数据】错误
    消息队列的一些知识
    excel中添加下拉候选
    君生我未生,我生君已老
    分库分表的几个面试题
    sql server判断表存在
    vue定义data的三种方式与区别
    sql server多表关联update
    使用CodeMirror在浏览器中实现编辑器的代码高亮效果
    Jquery easyui Tree的简单使用
  • 原文地址:https://www.cnblogs.com/VectorLin/p/5356327.html
Copyright © 2011-2022 走看看