- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
栈
特殊线性表
班级: 计算机11-1 学号: 姓名: 成绩:_________
实验十 查找技术验证实验
实验目的
(1)掌握折半查找算法的基本思想;
(2)掌握折半查找算法的实现方法;
(3)掌握折半查找算法的时间性能;
(4)掌握二叉排序树定义和特性;
(5)掌握二叉排序树的建立方法;
(6)实现基于二叉排序树的查找技术;
(7)掌握二叉排序树的查找性能.
实验内容
(1)对给定的有序数组(假设长度为n),查找数组中与给定值k相等的元素。
(2)①对给定的一组无序序列,建立一棵二叉排序树;
②对建立的二叉排序树实现查找操作。
设计与编码
折半查找验证
#includeiostream
using namespace std;
int BinSearch1(int r[ ], int n, int k)
{
int low=1;
int high=n;
int count=0;
while (low=high)
{
int mid=(low+high)/2;
count++;
if (kr[mid-1]) high=mid-1;
else if (kr[mid-1]) low=mid+1;
else
{
cout比较次数是:count;
return 0;
}
}
return 0;
}
int main()
{
int n,b,a[100];
cout*********************endl;
cout请输入数组的个数:;
cinn;
cout请输入各个数的值:;
for(int i=0;in;i++)
cina[i];
cout请输入你要查找的值:;
cinb;
BinSearch1(a,n,b);
coutendl;
cout*********************endl;
return 0;
}
㈡二叉排序树的建立
#includeiostream
using namespace std;
struct BiNode
{
int data;
BiNode *lchild, *rchild;
};
class BiSortTree
{
public:
void desplayTree(void); //显示这个树
BiSortTree(int a[],int n); //建立查找集合a[n]的二叉排序树
~BiSortTree( ){}; //析构函数,释放二叉排序树中所有结点,同二叉链表的析构函数
void InsertBST(BiNode *root, BiNode *s); //在二叉排序树中插入一个结点s
BiNode *searchTree(int k); //在树中查找一个值
private:
BiNode *root; //二叉排序树(即二叉链表)的根指针
void ShowTree(BiNode *root); //显示
BiNode *SearchBST(BiNode *root, int k); //查找值为k的结点
};
//二叉排序树插入算法
void BiSortTree::InsertBST(BiNode *root, BiNode *s)
{
if (root==NULL)
root=s;
else if (s-dataroot-data)
InsertBST(root-lchild, s);
else InsertBST(root-rchild, s);
}
//构造二叉排序树
BiSortTree::BiSortTree(int r[], int n)
{
root=NULL;
for (int i=0; in; i++)
{
BiNode *s=new BiNode;
s-data=r[i];
s-lchild=NULL;
s-rchild=NULL;
InsertBST(root,s);
}
}
//二叉排序树查找算法
BiNode* BiSortTree::searchTree(int k)
{
return SearchBST(root,k);
}
文档评论(0)