首页 > 用户投稿

数据结构折半查找算法 用递归法写一个折半查找的算法?

用递归法写一个折半查找的算法?

半搜索需要先对数据进行排序。以上是气泡排序算法的实现。半搜索算法描述如下:在一个有序表中,将要搜索的数据值与搜索范围的中间元素值进行比较,会出现三种情况:

1)如果要搜索的数据值正好等于中间元素值,则放回中间元素值的索引。

2)如果要搜索的数据的值小于中间元素的值,则整个搜索范围的前半部分将用作新的搜索范围,并且1)执行,直到找到相等的值。

3)如果要搜索的数据的值大于中间元素的值,则整个搜索范围的后半部分将用作新的搜索范围,并执行1)直到找到相等的值。4)如果最后找不到相等的值,则返回错误消息。实现过程如下:复杂性分析:半搜索就像搜索素数二叉树:中间值是二叉树的根,前半部分是左子树,后半部分是右子树。半搜索方法的搜索次数正好是值所在的层数。在等概率的情况下,它是关于log2(n1)-1的,算法复杂度为o(logn)。

折半查找算法及代码?

数据结构折半查找算法 用递归法写一个折半查找的算法?

#include<iostream>

#使用命名空间std

模板<classt>

intbinarysearch(ta[],constt&x,intn,intleft,intright)

{

if(left>=right)

return-1

else

{

if(a[(leftright)/2]==x)

returnelseif(x>=(left)右)/2)

返回二进制搜索(a,x,n,(左-右)/21,右)

elseif(x<(左-右)/2)

返回二进制搜索(a,x,n,左,(左-右)/2-1)

}

}

intmain()

{

inta[maxsize

]inti,len,x,p

cin>>len

for(i=0i<leni)

cin>>a[i

]cin>>x

p=binarysearch(a,x,len,0,len-1)

if(p==-1)

cout<<“数字不存在!”!“<<endl

else

cout<<p1<<endl

返回0

}

数据结构折半查找算法数据结构折半查找算法代码数据结构折半查找的递归算法

原文标题:数据结构折半查找算法 用递归法写一个折半查找的算法?,如若转载,请注明出处:https://www.saibowen.com/tougao/18638.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。