二分搜索

来源:互联网 发布:navicat导入sql出错 编辑:程序博客网 时间:2024/05/18 22:40

二分搜索的时间复杂度为o(logn),仅适用于单调序列

这里写图片描述

    while(top-low>1)    {        int m=(top+low)/2;        if(a[m]<=n) low=m;        if(a[m]>=n) top=m;    }    //结果 a[low]为小于等于n的最大值    //结果 a[top]为大于等于n的最小值    //low==top 说明刚至少好有一个等于它 否则一个都没有

稍做修改,可以实现其他功能,比如寻找大于n的最小值

    while(top-low>1)    {        int m=(top+low)/2;        if(a[m]<=n) low=m;        if(a[m]>n) top=m;    }    //结果 a[low]为小于等于n的最大值    //结果 a[top]为大于n的最小值
0 0
原创粉丝点击