二分查找

时间复杂度为:O(log2n)

using namespace std;
int a[100]={1,2,3,5,12,12,12,15,29,55};//数组中的数(由小到大)
int k;//要找的数字
int found(int x,int y)
{
    int m=x+(y-x)/2;
    if(x>y)//查找完毕没有找到答案,返回-1
        return -1;
    else
    {
        if(a[m]==k)
            return m;//找到!返回位置.
        else if(a[m]>k)
            return found(x,m-1);//找左边
         else
            return found(m+1,y);//找右边
    }
}
int main()
    {
        cin>>k;
        cout<<found(0,9);
        return 0;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二分查找(上):如何用最省内存的方式实现快速查找功能? 今天我们讲一种针对有序数据集合的查找算法:二分查找(Bin...
    GhostintheCode阅读 1,967评论 0 3
  • 非递归版本 递归版本 对二分查找分析 在N个有序数组中,进行二分查找最多需要(log2N + 1)次比较(无论是否...
    wayyyy阅读 170评论 0 0
  • 二分查找又称折半查找,实际操作时,在排好序的队列中,每次取中间位置值与目标值对比,由于已经排序,无论对比结果如何都...
    s1991721阅读 675评论 0 2
  • 为什么来简书?我问自己。 我是个有故事的人。有故事的人就想倾诉,倾诉并非为了博得读者的回应,而是为了调节自己,让自...
    霞想阅读 219评论 2 6
  • 今天广东貌似又回到夏天了,28°的天气,真的是好热,特别是今天还是在仓库里面整理货物,满身大汗,一身臭烘烘的,在广...
    三皮Simon阅读 140评论 0 0