问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

二分搜索法的简介

发布网友 发布时间:2022-04-18 15:51

我来回答

1个回答

热心网友 时间:2022-04-18 17:20

如果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。二分搜索法的应用极其广泛,而且它的思想易于理解,但是要写一个正确的二分搜索算法也不是一件简单的事。第一个二分搜索算法早在1946年就出现了,但是第一个完全正确的二分搜索算法直到1962年才出现。Bentley在他的著作《Writing Correct Programs》中写道,90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。问题的关键在于准确地制定各次查找范围的边界以及终止条件的确定,正确地归纳奇偶数的各种情况,其实整理后可以发现它的具体算法是很直观的,我们可用C++描述如下:
template<class Type>
int BinarySearch(Type a[],const Type& x,int n)
{
int left=0;
int right=n-1;
while(left<=right){
int middle=(left+right)/2;
if (x==a[middle]) return middle;
if (x>a[middle]) left=middle+1;
else right=middle-1;
}
return -1;
}
或者:
/*找到目标值时返回值为下标,找不到时返回如果要加入此数,应该放置的下标(负数表示)*/
int binarySearch (int arrays[], int size, int num)
{
int low = 0, high = size - 1;
while ( high > low )
{
int mid = (low + high) / 2;
if ( num > arrays[mid] )
low = mid + 1;
else if (num < arrays[mid])
high = mid - 1;
else if (num == arrays[mid])
return mid;
}
return -low - 1;
}
第一个模板函数BinarySearch在a[0]<=a[1]<=...<=a[n-1]共n个升序排列的元素中搜索x,找到x时返回其在数组中的位置,否则返回-1。容易看出,每执行一次while循环,待搜索数组的大小减少一半,因此整个算法在最坏情况下的时间复杂度为O(log n)。在数据量很大的时候,它的线性查找在时间复杂度上的优劣一目了然。
二分搜索法的局限性:必须是在有序的元素中进行,不能在无序的元素中使用。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我想下个好点的股市行情软件,光大证券金阳光app怎么样啊? 股票行情软件下载选哪个比较好?光大证券的金阳光app怎么样? 光大证券开户APP是什么 光大用什么炒股软件 家里房顶漏水怎么办 房顶漏水最好补漏方法 中石化薪资揭秘(天津、海南、镇海、中科、茂名) 专科生在茂名石化待遇怎样 茂名石化正式工待遇怎么样 茂名石化待遇如何 729-08胶皮是内能的吗 当爱情平淡成亲情时,你选择退出还是继续? 健康云反馈记录在哪儿 当初爱到末路我选择退出 是哪首歌的歌词 有一首歌中间是《当初爱到末路我选择退出》,是什么歌 高中减肥计划时间表 商标注册查询,哪个工具好用些。 我156斤,请给我安排个减肥计划,高中生,要时间合理? 已下载的健康云如何显示在手机上 爱到陌路我选择退出,就竟为何走到这种地步是什么歌? 跪求!!一份完备的减肥计划!! 下载健康云需要需要同意隐私政策,安全吗 {当初爱到陌路。我选择退出。}这句话在那首歌里有?? 怎杆将健康云下载后放桌面上 爱到末路我选择退出,是什么意思? 高中生暑假减肥计划 当初爱到陌路 我选择退出 这句歌词是哪首歌里的? 我是高中生,我想在暑假里减肥,求设计一套计划,最好有(跑步、俯卧撑、引体向上等)求计划,谢谢 我选择退出 是什么歌? 不是丢了幸福的猪,是男声的。 高中生打算减肥,有哪些好的建议呢? 描写春天的古诗句。 高中生(女),153cm,110斤,如何能在暑假的20天的时间里减掉二三十斤? 求减肥计划..谢谢!! 关于喜欢的人说三人世界我选择退出的意思? 我是个高中生(女),我想利用暑假减肥希望有人能帮我提出减肥方案计划(要符合学生的,不用贵的东西) 给不了你要的幸福所以选择退出是什么歌 我是一名高中生,想在这个月减肥,求一份有效的减肥计划 女高中生减肥计划表,不去健身房 “如果爱到末路就选择退出”这是那首歌的歌词? 锤(工具)注册商标属于哪一类? 在校高中生,女,身高158cm ,体重63kg,求暑假减肥计划!!不要那些官方的又不实用的. 高中生上学期间减肥计划表 当初爱到深处 我选择退出是什么歌? 夹钳(工具)注册商标属于哪一类? 三个人的友谊,我总是被冷落的那一个,但是我不甘心退出,怎么办? 因为我爱你,我选择退出 锄头(工具)注册商标属于哪一类? 我爱上了一个女孩,但她却喜欢着别人,我选择退出,可是心里总觉得不甘心,我该怎么办 我选择退出! 我选择退出梦幻 这一次我选择退出英语 be meant for sb是什么意思