2021年实验报告排序与查找.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电 子 科 技 大 学 实 验 报 告 课程名称: 数据结构与算法 学生姓名: 学 号: 点名序号: 指导老师: 试验地点: 基础试验大楼 试验时间: 5月20日 --2学期 信息与软件工程学院 实 验 报 告(二) 学生姓名 学 号: 指导老师: 试验地点: 基础试验大楼 试验时间: 5月20日 一、 试验室名称: 软件试验室 二、 试验项目名称: 数据结构与算法—排序与查找 三、 试验课时: 4 四、 试验原理: 快速排序基础思想是: 经过一躺排序将要排序数据分割成独立两部分, 其中一部分全部数据都比另外一不部分全部数据都要小, 然后再按次方法对这两部分数据分别进行快速排序, 整个排序过程能够递归进行, 以此达成整个数据变成有序序列。 假设要排序数组是A[1]……A[N], 首先任意选择一个数据(通常选择第一个数据)作为关键数据, 然后将全部比它数都放到它前面, 全部比它大数都放到它后面, 这个过程称为一躺快速排序。一躺快速排序算法是: 1)设置两个变量I、 J, 排序开始时候I: =1, J: =N 2)以第一个数组元素作为关键数据, 赋值给X, 即X: =A[1]; 3)从J开始向前搜索, 即(J: =J-1), 找到第一个小于X值, 二者交换; 4)从I开始向后搜索, 即(I: =I+1), 找到第一个大于X值, 二者交换; 5)反复第3、 4步, 直到I=J。 二分法查找(折半查找)基础思想: (1)确定该区间中点位置: mid=(low+high)/2???? min代表区间中间结点位置, low代表区间最左结点位置, high代表区间最右结点位置 (2)将待查a值与结点mid关键字(下面用R[mid].key)比较, 若相等, 则查找成功, 不然确定新查找区间: A)假如R[mid].keya, 则由表有序性可知, R[mid].key右侧值都大于a, 所以等于a关键字假如存在, 肯定在R[mid].key左边表中,这时high=mid-1; B)假如R[mid].keya,则等于a关键字假如存在, 肯定在R[mid].key右边表中。这时low=mid; C)假如R[mid].key=a, 则查找成功。 (3)下一次查找针对新查找区间, 反复步骤(1)和(2) (4)在查找过程中, low逐步增加, high逐步降低, 假如highlow, 则查找失败。 五、 试验目: 本试验经过实现快速排序和折半查找算法, 使学生了解怎样实现快速查找和排序基础算法思想。经过练习, 加强对算法了解, 提升编程能力。 六、 试验内容: (1)实现数据序列输入; (2)实现快速排序算法,并对输入序列排序后输出; (3)实现折半查找算法,并在步骤(2)排序后序列上,进行任意地 查找,并输出查询结果。 七、 试验器材(设备、 元器件): PC机一台, 装有C语言集成开发环境。 八、 数据结构与程序: #includestdio.h #includestdlib.h #define MAX 1000 #define FROMFILE 1 typedef struct JD{ int key; }JD; int binsrch(JD r[],int n,int k) { int low,high,mid,found; low=1; high=n; found=0; while((low=high)(found==0)) { mid=(low+high)/2; if(kr[mid].key) low=mid+1; else if(k==r[mid].key) found=1; else high=mid-1; } if(found==1) return(mid); else return(0); } void quicksort(JD r[],int low,int high){ int i,j,k; JD x; if(low=hig

文档评论(0)

173****6081 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档