




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_ 实验: 查找和排序的实现1.实验目的1)掌握折半查找,顺序查找和黄金比例查找的方法;2)掌握直接插入排序,折半插入排序和快速排序的方法。2. 实验内容: (1) 建立顺序表;(2)实现以下算法:输入要查询的值,经过顺序查找和折半查找还有黄金比例查找,找出该元素的位置。顺序表经过直接插入排序,折半插入排序和快速排序后输出。 3. 设计思想1(非递减序列)顺序查找:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若相等,则查找成功。2(非递减序列)折半查找:以处于区间中间位置记录的关键字和给定值比较,若相等则成功,如不等,则缩小范围,直至新的区间中间位置记录的关键字等于给定值或区间大小小于零时为止3. (非递减序列)黄金比例查找:以处于区间黄金比例处(0.618)位置记录的关键字和给定值比较,注意,不能直接用mid=(low+high)*0.618,这样mid会溢出,应该改为mid=(high-low)*0.618+low。4.直接插入排序:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。它是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序属于稳定的排序,最坏时间复杂性为O(n2),空间复杂度为O(1)。5. 折半插入排序:是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。6.快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。4.代码实现#include #include #define LIST_INIT_SIZE100#define LISTNCREMENT10typedef struct SqListint *elem;int length;int listsize;SqList;void InitList_Sq(SqList &L)/数据结构初始化,构造空的表L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int);if(!L.elem) exit(1);L.length=0;L.listsize=LIST_INIT_SIZE;void Creat(SqList &L)/建立顺序表int n;coutn;cout请按非递减顺序输入元素: endl;for(int i=1;iL.elemi;L.length=n;int search_Seq(SqList L,int key,int &d)/顺序查找 L.elem0=key; int i; d=d+1; for(i=L.length;key!=L.elemi;-i) d=d+1; return i; int halfserch(SqList L,int key2,int &k)L.elem0=key2; int low=1;int high;int mid;high=L.length;k=0;while(low=high)mid=(low+high)/2;k=k+1;if(key2=L.elemmid)return mid;else if (key2=L.elemmid)high=mid-1;else low=mid+1;return 0;int Newserch(SqList L,int key,int &d)L.elem0=key; int low=1;int high;int mid;high=L.length;d=0;while(low=high)mid=(high-low)*0.618+low;d=d+1;if(key=L.elemmid)return mid;else if (key=L.elemmid)high=mid-1;else low=mid+1;return 0;void main()SqList L;cout创建顺序表endl;InitList_Sq(L);Creat(L);int a,b,c,d,e;d=0;cout请输入要查询的值:a; c=search_Seq(L,a,d);cout做顺序查找的执行次数为:dendl;cout经过顺序查找,您查询的元素位置是:cendl; b=halfserch(L,a,d);cout做折半查找的执行次数为:dendl; cout经过折半查找,您查询的元素位置是:bendl;e=Newserch(L,a,d);cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年黄山市徽州国有投资集团有限公司招聘13人模拟试卷含答案详解
- 2025年烟台市公费医学生考试选聘(139人)模拟试卷及答案详解(各地真题)
- 2025湖南湘潭市市直学校人才引进45人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025福建漳州市漳浦县金瑞集团招聘20人模拟试卷附答案详解
- 2025湖南株洲市茶陵县卫生健康局所属事业单位就业见习岗位招聘10人模拟试卷及答案详解(名师系列)
- 2025内蒙古鄂尔多斯生态环境职业学院人才引进38人模拟试卷及完整答案详解1套
- 2025届春季江苏金陵科技集团有限公司校园招聘模拟试卷及参考答案详解
- 2025年福建南平武夷有轨电车有限公司招聘1人模拟试卷及完整答案详解1套
- 2025年嘉兴市秀洲区王江泾医院公开招聘编外合同制人员5人模拟试卷有答案详解
- 2025江苏南京市栖霞区人民法院编外人员招聘6人考前自测高频考点模拟试题附答案详解
- 2025年上海市公安辅警、法检系统辅助文员招聘考试(职业能力倾向测验)历年参考题库含答案详解
- XX园项目销售手册
- 锅炉工安全培训知识课件
- GB 46031-2025可燃粉尘工艺系统防爆技术规范
- T/DGGC 005-2020全断面隧道掘进机再制造检测与评估
- 灌注桩施工的合同范本
- 当代世界经济心得体会
- 2024版人教版八年级上册英语单词表(含音标完整版)
- 天津地区高考语文五年高考真题汇编-文言文阅读
- 高三为梦想扬帆++励志班会课件
- 个人简历模板(5套完整版)
评论
0/150
提交评论