- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
。计算机科学与技术系 实 验 报 告专业名称计算机科学与技术课程名称数据结构与算法项目名称顺序表的排序实验 班 级14计科一班学 号1404011013姓 名高婷婷 同组人员实验日期2016.3.29一、实验目的与要求: (简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要求。)实验目的:掌握以顺序表组织排序数据元素的排序方法,重点是希尔排序、快速排序、归并排序。涉及到相关知识点:顺序表的建立、冒泡排序的改进、直接插入排序以及快速排序算法的应用。实验的具体要求:--改进冒泡排序,对一个待排序的数据元素集合进行奇偶转换排序。--在熟悉直接插入排序的基础上,结合折半插入排序算法的描述,写出折半插入排序算法的实现过程(函数),并通过运行验证。--设计算法将一个整形数组调整为这样的数组:所有3的倍数在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。要求算法时间尽可能少。二、实验内容(根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、算法原理、实验仪器、设备选型及连线图、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他 )1、问题分析--(1)奇偶转换排序: 题目需要建立一种新的排序方式,选取所有奇数列的元素与其右侧相邻的元素进行比较,将较小的元素排在最前面,选取所有偶数列的元素与其右侧相邻的元素进行比较,将较小的元素排在最前面,重复前面两步直到所有序列有序。折半插入排序 插入排序采用顺序数据结构,插入元素伴随移动数据,但一般思路是从前向后一次与插入元素进行比较,时间复杂度O(n),效率较低,由于数组r[0...i-1]本身是有序的,可以借鉴折半查找的思想寻找插入位置,此时时间复杂度为O(lgn).当数据量足够大时,这两种排序算法所用的时间相差很大,获得每个元素的插入位置后,仅需一次向后移动位置即可。快速排序 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后对这两部分数据进行快速排序,整个排序过程可以递归进行,以此达到整个数据序列有序。2、概要设计(1)改进冒泡排序,对一个待排序的数据元素集合进行奇偶转换排序。详细思路:--建立顺序表RecordList *SqLset()RecordList *SqLset(){RecordList *L;int i=0,a;L=malloc(sizeof(RecordList));printf(输入一个整型序列,输入0时结束!);scanf(%d,a); //输入一个整数L-length=0;while(a!=0){L-r[i]=a;L-length++,i++;if(L-length==LIST_SIZE-1) break;scanf(%d,a);}return(L);}--设计排序函数void Bub(RecordList *L),第一趟对所有奇数i,将r[i]与r[i+1]进行比较,第二趟对所有的偶数i,将r[i]与r[i+1]进行比较,每次比较时若r[i]r[i+1],则将二者交换,重复上述过程至整个数据表有序。--主函数main()调用上述两个函数,得到运行结果 (2)在熟悉直接插入排序的基础上,结合折半插入排序算法的描述,写出折半插入排序算法的实现过程(函数),并通过运行验证。--建立顺序表--写一个折半插入排序法的函数 void BinSort(RecordList *L),在函数中写一个循环,在循环中应用折半插入排序,数组中变换二次区间方法实现折半插入法算法构思:a.low=1;high=i-1//有序表长度i-1,第i个元素为待插元素;b.若lowhigh,得到插入位置,转e;c.若low=high,mid=(low+high)/2;//取表的中点,将表一分为二,确定待插入区间;d.若r[0]r[mid],则high=mid-1;//插入位置在左子表中否则,low=mid+1;//插入位置在右子表中e.high+1即为待插入位置,从i-1到high+1的元素逐个后移,然后将r[0]放在r[high+1]位置,完成一趟插入排序--对编好的程序进行测试,得出测试结果 (3)设计算法将一个整形数组调整为这样的数组:所有3的倍数在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。要求算法时间尽可能少。--建立一个表长为length的顺序表--根据题意使用快速排序法对其排序,设置函数void Partion(RecordList *L),将所有3的倍数放在最左边,所有除以3余1的数放中间,而所有除以3余2的数在最左边--主函数main()调用输入函数SQLset()、Partion()实现函数功能。详细设计A改进冒泡排序法---奇偶转换排序流程图表长n,
您可能关注的文档
最近下载
- 中国染料化工项目经营分析报告.docx
- 专题04:论证结构与思路-备战2025年中考语文一轮复习现代文阅读讲与练(江苏通用)(解析版).docx VIP
- 初中英语读写结合模式促进写作教学的探讨.pptx VIP
- 2025年中国DBE项目创业投资方案.docx
- 堤顶混凝土路面施工方案堤顶混凝土路面施工方案.doc VIP
- 筑牢金融数字防线:商业银行信息安全风险管理体系的构建与革新.docx
- 《人力资源管理师三级》第五章薪酬管理.ppt
- 《让子弹飞》剧本.doc VIP
- 2025年水环境服务项目可行性分析报告.docx
- DB4201T 620-2020 液化石油气供气场站设置技术规定.docx VIP
文档评论(0)