数据结构中归并排序的设计与实现.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文档。上传文档
查看更多
数据结构中归并排序的设计与实现

课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 归并排序的设计与实现 初始条件: 理论:学习了《数据结构》课程,掌握了基本的数据结构和常用的算法; 实践:计算机技术系实验室提供计算机及软件开发环境。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、系统应具备的功能: (1)输入一组数,用递归和非递归程序实现归并排序 (2)分析归并排序的复杂度 (3)将归并排序的思想用于外部排序中 2、数据结构设计; 3、主要算法设计; 4、编程及上机实现; 5、撰写课程设计报告,包括: (1)设计题目; (2)摘要和关键字(中文和英文); (3)正文,包括引言、需求分析、数据结构设计、算法设计、程序实现及测试、设计体会等; (4)结束语; (5)参考文献。 时间安排: 2010年元月10日-14日 (第19周) 元月10日 查阅资料 元月11日 系统设计,数据结构设计,算法设计 元月12日-13日 编程并上机调试 元月14日 撰写报告 元月15日 验收程序,提交设计报告书。 指导教师签名: 2010年元月10日 系主任(或责任教师)签名: 2010年元月10日 归并排序的设计和实现 摘要:该程序主要由五个部分组成:把一组待排的数据信息放在结构体里,2-路归并排序,对数组作一趟归并排序,对数组作归并排序,主函数 。 Abstract: The program mainly consists of five parts: the a row of data to be placed on structure, the 2 - way merge sort, for a trip to the array? Merge sort, merge sort on the array as the main function. 关键字:模型化, 2-路归并, 一趟归并, 归并 Keywords: modeling, 2 - way merge, a trip to merge, merge? 0.引言 归并排序是一种稳定的内部排序,“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。无论是顺序存储结构还是链表存储结构,都可在O(m+n)的时间量级上实现。利用归并的思想容易实现排序。 2—路归并排序:假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到不小于n/2整数个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止。 1.算法把握 1.1归并排序算法的具体分析 咋一看,归并排序时一种“费力不讨好”的排序方法,因为最后一趟始终要对整个序列进行排序,这会使的前几趟的排序似乎是在做无用功,其实不然。对初始关键字两两分组并进行组内排序后,在下一次处理中,并不是简单地在组容量扩大一倍的基础上重新排序,而是把上一趟已经排好序的两组数组重新合并成一个新的有序组。这个把两个有序组合并到一个新的有序组的过程要比单独排序快得多。归并排序的核心操作时合并有序组。对于最开始的两两分组,也可以看成是两个只含有1个关键字的组进行合并。 1.2 除了核心的合并操作外,需要先把序列进行分组,每次组容量减半,直到组内只有一个关键字为止,再对组进行合并,直到所有关键字都属于一组为止。实际上,分组采用递归的方法更加方便。 2.需求分析 (1)通过建立一个结构体,用来存放数据信息,包括数据的个数,本身记录。 (2)2-路归并排序的算法,实现两两归并。 (3)主函数初始化数据,选择归并排序的方法及打印数据结果。 3.数据结构设计 用结构体存储待排的数据。 #includeiostream.h #define MAX 100 /*定义MAX是最大的允许输入数字个数*/ typedef struct { int n; /* n为文件中的记录个数,nMAXNUM */ int data[MAX]; }lqlist; 4.算法设计 4.1 2-路归并排序的非递归算法 //将有序的SR[i..m]和SR[m+1..n]归并为有序的TR[i..n] void merge(RcdType SR[],RcdTypeTR[],int i,int m,int n) { for(j=m+1,k=I;i=mj=n;k++) {

文档评论(0)

zhuliyan1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档