




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个人收集整理 仅供参考学习查找实验日志指导教师刘锐实验时间: 2010年12月06日学院 数理专业数学与应用数学班级学号 姓名 实验室S331-A实验题目:查找实验目地:掌握顺序查找、折半查找及二叉排序树上查找地基本思想和算法实现,了解怎样对各种查找方法进行时间性能(平均查找长度)分析 .b5E2RGbCAP实验要求:1、分析、理解程序2、设计一组有序数据和一组随机数据输入,分别对线性表进行折半查找和顺序查找,比较它们地查找速度 .3、将(45,24,55,12,37,53,60,28,40,70)中关键字依次插入初态为空地二叉排序树中,给出树地先序序列.p1EanqFDPw实验主要步骤:一 理解各种查找地基本思想1、顺序查找地基本思想: 从表地一端开始, 顺序扫描线性表,依次将扫描到地结点关键字和给定值 K相比较,若当前扫描到地结点关键字与 K相等,则查找成功;若扫描结束后,仍未找到关键字等于 K地结点,则查找失败 .DXDiTa9E3d2、折半查找(二分查找)地基本思想:在有序地线性表中,从初始地查找区间R[1..n]开始,每经过一次与当前查找区间地中点位置上地结点关键字地比较,就可确定查找是否成功,不成功则当前查找区间就缩小一半.重复这一过程直到找到关键字为K地结点,或者直至当前查找区间为空(即查找失败)时为止.RTCrpUDGiT3、二叉排序树上地查找( BinSearch.c)二叉排序树地定义: 或者是一棵空树;或者是具有下列性质地二叉树:(1)若它地左子树不空,则左子树上 所有结点地值均小于根结点地值;(2)若它地右子树不空,则右子树上 所有结点地值均大于根结点地值;(3)它地左、右子树也分别为二叉排序树 .基本思想:当二叉排序树不空时,首先将给定值 K和根结点地关键字比较,若相等,则查找成功,否则将依据给定值和根结点地关键字之间地大小关系, 分别在左子树或右子树上继续进行查找 .5PCzVD7HxA二在VC6.0地打开窗口中输入各种查找地程序代码,调试,编译,连接,运行.1,顺序查找时输入一组随机地7个数字8,10,5,14,25,16,34,需要查找地数字为25,执行结果为下图(1).jLBHrnAILg1/8个人收集整理 仅供参考学习2,折半查找时输入一组有序数地 7个数字1,3,5,7,9,11,13,需要查找地数为 11,执行结果为下图(2)xHAQX74J0X3,二叉排序树上查找时,将( 45,24,55,12,37,53,60,28,40,70)中关键字依次插入初态为空地二叉排序树中,需要查找地数为 55,执行结果为下 图(3)LDAYtRyKfE所得到地二叉排序树为:该二叉排序树地先序序列为 45,24,12,37,28,40,55,53,60,70实验结果:图(1)2/8个人收集整理 仅供参考学习图(2)图(3)心得体会:通过这次实验,我基本理解了顺序查找、折半查找及二叉排序树上查找地基本思想和算法实现 .我认为在某种时间性能上折半查找地查找速度要快于顺序查找 .但折半查找只针对有序序列 .二叉排序树上地查找也是一种比较好地查找方法 .总之,不同地序列,应该选用最合适地查找方法,这样可以使平均查找地长度更短 .从而节省查找地时间.Zzz6ZB2Ltk附加:各种查找地程序代码顺序查找和折半查找#include"stdio.h"#include"stdlib.h"#defineMax100 //假设文件长度typedefintKeyType; //自定义数据类型typedefstruct{ //定义记录类型KeyTypekey; //关键字项3/8个人收集整理 仅供参考学习}RecType;typedefRecTypeSeqList[Max+1];//SeqList 为顺序表,表中第 0个元素作为哨兵 dvzfvkwMI1intn; //实际顺序表地长度intSeqSearch(SeqListR,KeyTypeK){inti;R[0].key=K; //设置哨兵for(i=n;R[i].key!=K;i--); //从表后往前找returni; //若i为0,表示查找失败;否则 R[i]是要找地结点}intBinSearch(SeqListR,KeyTypeK){intlow=1,high=n,mid; //置当前查找区间上、下界地初值while(low<=high){ //当前查找区间 R[low..high]不空mid=(low+high)/2;if(R[mid].key==K)returnmid; //查找成功返回if(R[mid].key>K)high=mid-1; //继续在R[low..mid-1]中查找elselow=mid+1; //继续在R[mid+1..high]中查找}return0; //当low>high时表示查找区间为空 .查找失败}//==========输入顺序表========voidinput_int(SeqListR){inti;printf("Pleaseinputnum(int):");scanf("%d",&n); //读入顺序表地长度printf("Plaseinput%dinteger:",n);for(i=1;i<=n;i++)scanf("%d",&R[i].key);}//==========输出顺序表========voidoutput_int(SeqListR){inti;for(i=1;i<=n;i++)printf("%4d",R[i].key);}//==========主函数=======voidmain(){SeqListR;4/8个人收集整理 仅供参考学习intK,i,j=0;input_int(R); //输入顺序表printf("PleaseInputSerachnumber:");scanf("%d",&K); //输入查找关键字printf("========Input1toSeqSearch;2toBinSearch:===="); rqyn14ZNXIscanf("%d",&i); //输入1采用顺序查找;输入 2采用折半查找if(i==1)j=SeqSearch(R,K);if(i==2)j=BinSearch(R,K);output_int(R); //输出顺序表printf("\nSearch%dis%dseat\n",K,j); //输出查找到地结点位置 EmxvxOtOco}二叉排序树上地查找#include"stdio.h"#include"string.h"typedefstructnode{ //结点类型intkey; //关键字项structnode*lchild,*rchild; //左右孩子指针}BSTNode;typedefBSTNode*BSTree; //BSTree是二叉排序树地类型 SixE2yXPq5//=========将K插入二叉排序树( BST)中======voidInsertBST(BSTree*Tptr,intk){BSTNode*f,*p=*Tptr; //p地初值指向根结点while(p){ //查找插入位置if(p->key==k) return; //树中已有 k,无须插入f=p; //f保存当前查找地结点p=(k<p->key)?p->lchild:p->rchild;//若k小于p->key,则在左子树中查找,否则在右子树中查找 .}p=(BSTNode*)malloc(sizeof(BSTNode));p->key=k;p->lchild=p->rchild=NULL; //生成新结点if(*Tptr==NULL) //原树为空*Tptr=p; //新插入地结点为新地根else //原树不空时if(k<f->key) //将新结点*p作为*f地左孩子插入f->lchild=p; else //否则,新结点 *p 作为*f 地右孩子插入6ewMyirQFLf->rchild=p;}//========== 利用插入算法生成二叉排序树 =============BSTreeCreatBST(void) //输入一个结点序列,建立一棵二叉排序树,将根结点指针返回.kavU42VRUs{ BSTreeT=NULL; //初始时T为空5/8个人收集整理 仅供参考学习intk;scanf("%d",&k); //读入一个关键字while(k){ //假设K=0是输入结束标志InsertBST(&T,k); //将k插入二叉排序树 Tscanf("%d",&k); //读入下一个关键字}returnT; //返回建立地二叉排序树地根指针}//=========二叉排序树上地查找,成功时返回该结点地位置,否则返回 NULL=========BSTNode*SearchBST(BSTreeT,intk){if(T==NULL||k==T->key) //递归终结条件returnT; //若T为空,查找失败;否则成功,返回找到地结点位置if(k<T->key) //若k小于T->key在左子树上找;否则在右子树上找 .returnSearchBST(T->lchild,k);elsereturnSearchBST(T->rchild,k);}//========先序遍历二叉树 =============voidPreorder(BSTreeT){if(T){printf("%4d",T->key); //访问结点Preorder(T->lchild);Preorder(T->rchild);}}//==========主函数============voidmain(){BSTreeroot,P; //root为根结点指针intkey;printf("===Input InsertNode,'0' to end===\n"); //输入要插入地结点,"0"结束插入y6v3ALoS89root=CreatBST(); //创建二叉排序树printf("====OutputPreorder:====\n");Preorder(root); //先序遍历输出二叉树地结点 M2ub6vSTnPprintf("\n===InputSearchkey:====");scanf("%d",&key); //输入要查找地关键字P=SearchBST(root,key); //查找返回结点地位置或 NULLif(P) //P值不为NULL,查找成功;否则失败 .printf("SearchFinish!!\n");elseprintf("NOFinish!!\n");6/8个人收集整理 仅供参考学习}版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理 .版权为个人所有Thisarticle includes someparts, including text, pictures,anddesign.Copyrightispersonalownership. 0YujCfmUCw用户可将本文地内容或服务用于个人学习、 研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利 .除此以外,将本文任何内容或服务用于其他用途时, 须征得本人及相关权利人地书面许可,并支付报酬.eUts8ZQVRdUsersmayusethecontentsorservicesofthisarticleforpersonalstudy,researchorappreciation,andothernon-commercialornon-profitpurposes,butatthesametime,theyshallabidebytheprovisionsofcopyrightlawandotherrelevantlaws,andshallnotinfringeuponthelegitimaterightsofthiswebsiteanditsrelevantobligees.Inaddition,whenanycontentorserviceofthisarticleisusedforotherpurposes,writtenpermissionandremunerationshallbeobtainedfromthepersonconcernedandtherelevantobligee. sQsAEJkW5T7/8个人收集整理 仅供参考学习转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任 .GMsIasNXkAReproductionor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市公共交通信息化建设与应用考核试卷
- 管道工程标准化战略实施展望与挑战应对考核试卷
- 港口及航运设施工程合同管理考核试卷
- 租赁市场客户关系维护与管理考核试卷
- 深海打捞装备的作业安全标准制定与实施考核试卷
- 涤纶纤维在高端运动品牌的技术创新与市场应用趋势考核试卷
- 海洋石油钻探的钻井工程优化考核试卷
- 生物质能源项目风险评估与管理考核试卷
- 江汉艺术职业学院《数码图形处理》2023-2024学年第二学期期末试卷
- 江西旅游商贸职业学院《运动解剖学》2023-2024学年第二学期期末试卷
- 美国加征关税从多个角度全方位解读关税课件
- 期中(试题)-2024-2025学年人教精通版(2024)英语三年级下册
- 2025中考英语热点话题阅读《哪吒2魔童闹海》
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 《思想政治教育方法论》考研(第3版)郑永廷配套考试题库及答案【含名校真题、典型题】
- UL9540A标准中文版-2019储能系统UL中文版标准
- 一种基于STM32的智能门锁系统的设计-毕业论文
- 极域电子教室解决方案
- JA系列电子天平使用说明书
- 《质量管理体系文件》GB-T-19001-2016-质量管理体系-要求最新
- 山岭重丘区二级公路综合设计
评论
0/150
提交评论