博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【算法学习笔记】22.算法设计初步 二分查找 上下界判断
阅读量:6911 次
发布时间:2019-06-27

本文共 870 字,大约阅读时间需要 2 分钟。

 

二分查找的两种写法,递归和普通循环~ 大部分情况下都用普通的循环,因为递归法费空间。

/* 时间复杂度: 1.最坏情况 查找最后一个元素(或者第一个元素) Master定理 T(n)=T(n/2)+O(1) 这个O(1)是判断 所以 T(n)=O(logn)                             a=1 b=2 所以要比较的是 O(1)和 n^(log2 1)   2.最好情况 查找中间元素  O(1) 空间复杂度: S(n)=n */int biFind(int* A,int len,int item,int cur){    //example: len 4: 2 4 5 3 middle = 1 (1.5)    //example: len 5: 2 5 6 4 1 middle = 2    int middle = (len-1)/2;    if (A[middle]==item)        return cur;    if (len==1)        return -1;    if(A[middle]>item)        return biFind(A, middle, item,cur);    return biFind(A+middle+1, len-middle-1, item,cur+middle+1);}int biFind_1(int* A,int x,int y,int item){    //划分    int m = x+(y-x)/2;    while (x
=item) y=m;//找到了但是左面有可能还有 或者 中间元素大于item else x=m+1;//item在右边 所以左边更新为m+1 } //如果一直没找到 此时x==y 且是正中间 return x;}

 

转载于:https://www.cnblogs.com/yuchenlin/p/4379249.html

你可能感兴趣的文章
自定义基于HTML5的video播放器—Customize your video player
查看>>
我的友情链接
查看>>
jquery:has()选择器
查看>>
漂亮的title提示信息
查看>>
bootstrap-分页-禁用和激活状态
查看>>
文件的递归遍历
查看>>
我的友情链接
查看>>
Python读写CSV文件
查看>>
EBB-7、认识bash
查看>>
CentOS 5.8 64位 源码安装mysql5.5.28
查看>>
windows下后台运行程序
查看>>
传统的MapReduce框架慢在那里
查看>>
Linux下修改Mysql的用户(root)的密码
查看>>
萌新的Linux学习之路(十二)---软件安装
查看>>
2012数学建模A题
查看>>
20个java异常处理最佳实践
查看>>
centos架设pptp服务:并测试windos客户端、Linux客户端!
查看>>
【c#】BackgroundWorker类的使用方法
查看>>
【NetApp】启用smb2.0
查看>>
Nginx与django+uwsgi成功勾搭的始末(上)
查看>>