二分查找向上还是向下取整_二分查找时,为什么中点不可以向上取整?
本帖最后由 爱疯 于 2015-10-28 16:31 编辑
二分查找(折半查找)
1)前提:有序数组。
2)思想:在当前查找区中,x是被查找的值;min是左端最小值下标;max是右端最大值下标;mid是两个端点之间中点下标。不断的判断:
如果x
如果x>arr(mid),则去右半部分[mid+1,max]继续找x ...,
如果x=arr(mid),则mid就是x的位置,程序结束。
如果min>max,则返回-1,表示找不到x,程序结束。
3)试题:在有序数组中插入一个元素,并保证该数组仍有序。求插入的位置?
回答:通过折半方式,查找该元素的位置。如果该元素已存在,就插入到该元素的位置;否则,插入到当前最小索引的位置。
'**************************************************************************************
'需求:在数组arr中查找x,有就返回下标,没有则返回-1。
Sub test()
Dim arr()
arr = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
MsgBox binarySearch2(arr, 3), , "下标"
End Sub
'**************************************************************************************
Function binarySearch1(arr, x) As Long
Dim min&, max&, mid&
min = LBound(arr)
max = UBound(arr)
mid = (min + max) / 2
Do While x <> arr(mid)
If x > arr(mid) Then min = mid + 1 Else max = mid - 1
If min > max Then mid = -1: Exit Do
mid = (min + max) / 2
Loop
binarySearch1 = mid
End Function
'**************************************************************************************
Function binarySearch2(arr, x) As Long
Dim min&, max&, mid&
binarySearch2 = -1
min = LBound(arr)
max = UBound(arr)
Do While min <= max
mid = (min + max) / 2
If x = arr(mid) Then binarySearch2 = mid: Exit Do
If x > arr(mid) Then min = mid + 1 Else max = mid - 1
Loop
End Function
'**************************************************************************************
二分查找_百度百科
二分查找向上还是向下取整_二分查找时,为什么中点不可以向上取整?相关推荐
- 语句中如何结束本循环进入下一循环_第33 p,for遍历,循环取值最方便
大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第33篇文章,第二阶段的课程:Python基础知识:Python中的控制语句之for遍历. 学习本课程,建议先看一遍:[计算机基础知 ...
- python爬取站_简单python爬虫练习 E站本爬取
必备条件: 一台能上404的机子.. 过程: 由于也只是初学爬虫,个中技巧也不熟练,写的过程中的语法用法参考了很多文档和博客,我是对于当前搜索页用F12看过去..找到每个本子的地址再一层层下去最后下载 ...
- python爬取音乐_利用Python对网易云音乐进行爬取!无所不爬的爬虫啊!
今天,我们利用Python 中的selenium爬取网易云音乐中林俊杰<将故事写成我们>的评论,具体界面如下: 私信小编01 获取数十套PDF!爬虫 web都有的呢! 具体代码如下: #此 ...
- 用python爬取网站_「自如网」关于用python爬取自如网信息的价格问题(已解决) - seo实验室...
自如网 ###这是一篇求助文,我能获取图片并变成字符串,但是无法获取位移量### 前两坛突发奇想想要爬取自如网的租房数据,本来以为能够请求+美丽+ re能全部搞定,没想到这个网站的反爬机制有点让我搞不 ...
- python爬虫爬取房源_手把手教你用Python网络爬虫爬取新房数据
项目背景 大家好,我是J哥. 新房数据,对于房地产置业者来说是买房的重要参考依据,对于房地产开发商来说,也是分析竞争对手项目的绝佳途径,对于房地产代理来说,是踩盘前的重要准备. 今天J哥以「惠民之家」 ...
- mysql按行取数据_菜鸟求助:怎么在mysql隔12行取一条数据呀??
你的位置: 问答吧 -> PHP基础 -> 问题详情 菜鸟求助:怎么在mysql隔12行取一条数据呀?? 我的问题是这样的: 我的数据库是每5分钟一行数据 我要隔一小时取一条数据 也就是每 ...
- python登录网站后爬取数据_如何用 Python 登录主流网站,爬取一些需要的数据
最近收集了一些网站的登陆方式和爬虫程序,有的通过 selenium 登录,有的则通过抓包直接模拟登录.作者希望该项目能帮助初学者学习各大网站的模拟登陆方式,并爬取一些需要的数据. 作者表示模拟登陆基本 ...
- java 幂取模_计算一个数与2的n次方取模
HashMap的数据是存储在链表数组里面的.在对HashMap进行插入/删除等操作时,都需要根据K-V对的键值定位到他应该保存在数组的哪个下标中. 而这个通过键值求取下标的操作就叫做哈希. HashM ...
- python 取反_利用python怎么对bool布尔值进行取反
利用python怎么对bool布尔值进行取反 发布时间:2020-12-14 14:49:17 来源:亿速云 阅读:71 这期内容当中小编将会给大家带来有关利用python怎么对bool布尔值进行取反 ...
最新文章
- 001_FreeMarker介绍
- it oracle 培训,Oracle数据库技术培训_OracleDBA数据库工程师_Oracle数据库在线学习视频教程_IT职业培训-51CTO学院_精培学院...
- 12864液晶——读写、划点、划线、汉字、32*16的字符
- hust 1605 bfs
- python利用列表计算斐波那契数列前30项_python斐波那契数列的计算方法
- 2016-11-18(2)(Unity相关)---脚本基础
- linux操作系统-SSH原理介绍与免密运用与远程命令操作
- X64_Xcelera-CL_PX4采集卡测试记录
- bzoj2648/2716 kdtree
- axure轮播图怎么设置循环轮播_Axure RP8 动态面板之轮播图设置
- 转载 LDAP Schema Design
- 电子书下载:C# 语言规范 3.0 , 4.0 中文版
- 软件工程——(2)软件项目管理 思维导图
- AEJoy —— 表达式之弹性震动模拟详解【JS】
- EastFax 远程调用Ukey助力医学院
- 河北安新复合型水稻 国稻种芯·中国水稻节:雄安生态示范区
- mysql 数据库清理缓存
- Kafka知识点概述
- 算法笔记 简单贪心(月饼问题)
- LR参数化,参数化类型:Fille类型--参数分配与取值规律
热门文章
- 从 7天(北京首都师范大学店) 到 新中央电视台(大裤衩儿)
- CET4和CET6听力十大场景归纳
- 不懂人情世故就是垃圾
- python英文字符表示_python利用utf-8编码判断中文英文字符(转)
- 房地产评估师考试能用计算机,2010全国房地产估价师考试考前注意事项
- 一个非计算机专业出身的计算机从业人员的计算机学习经历
- KVM-virsh详解
- w7没有服务器认证消息,w7没有有效的ip配置怎么解决_win7本地连接没有有效的Ip配置处理方法...
- x8086千行汇编项目——汇编贪吃蛇、画图、两个程序的调度
- CNET盘点2012年IT人物:进退得意还是没落迷茫