数据结构课程设计十种排序算法比较.docVIP

数据结构课程设计十种排序算法比较.doc

  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文档。上传文档
查看更多
合肥学院 计算机科学与技术系 课程设计报告 2014 ~2015 学年第 学期 课程 数据结构与算法 课程设计名称 内部排序算法比较 学生姓名 学号 专业班级 指导教师 2015 年 1 月 【课题22、】内部排序算法比较 一、问题分析和任务定义 根据对本设计任务要求的理解和分析按以下点问题进行分析 二、数据结构的选择和 为了实现十种排序算法,产生的随机数用顺序表存储比较方便。顺序表数据类型(存储结构)描述如下: typedef int KeyType; struct rec { KeyType key; }; typedef rec sqlist[N]; 2.主程序与各模块之间的关系是: (1) void gensort(int b[],int n)起泡排序 (2) void insertsort(sqlist b,int n)插入排序 (3) void so(sqlist num,int n)折半插入排序 (4) void shellsort(sqlist b,int n)希尔排序 (5) void gentsort(int b[],int n)选择排序 (6) void output(sqlist b,int n)快速排序 (7) void sort3(sqlist nu,int n) //2-路插入排序 (8) void Merge(sqlist a, sqlist b, int low, int mid, int high)二路归并排序 (9) void MergePass(sqlist a, sqlist b, int n, int lenth)一趟归并排序 (10) void MergeSort(sqlist a, int n) //进行二路归并 (11) void sift(sqlist r,int s,int m) 堆排序 (12) void init(int a[])//随机生成N个整数 三、详细设计和编码 在整个课程设计中要求实现要求的功能必须要有主函数并通过主函数调用各功能子模块以上展示各个模块的功能以下将分析主函数和各个模块中的具体算法和实现 1.起泡排序函数的实现 函数声明:void gensort(int b[],int n) 起泡排序的基本思想是将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换,然后比较第二个记录和第三个记录的关键字。依次类推,直至第n-1个记录和第n个记录的关键字进行比较为止。起泡排序是一种稳定的排序方法,在随机产生数的情况下,总的时间复杂度为O(n2)。 2. 选择排序函数的实现 函数声明:void gentsort(int b[],int n) 选择排序法的基本思想是:第i趟排序通过n-i次关键码的比较,在n-1+i (1 = i = n-1)个记录中选取关键码最小的记录,并和第i个记录交换作为有序序列的第i个记录。选择排序是一种稳定的排序方法,总的时间复杂度是O(n2)。 3. 插入排序函数的实现 函数声明:void insertsort(sqlist b,int n) 直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到排好序的有序表中,直到无序区中没有记录为止,从而得到一个新的有序表。直接插入排序是一种稳定的排序方法,其时间复杂度为O(n)。 4. 希尔排序函数的实现 函数声明:void shellsort(sqlist b,int n) 希尔排序又称增量缩小排序先将序列按增量划分为元素个数相同的若干,直接插入排序,然后不断缩小增量直至为1,最后使用直接插入排序完成排序void sift(sqlist r,int s,int m) 首先将待排序的记录序列构造成一个堆,此时,选出了堆中所有记录的最大者即堆顶记录,然后将它们从堆中移走(通常将堆顶记录和堆中最后一个记录交换),并将剩余的记录再调整成堆,这样又找出了次大的记录,依此类推,直到堆中只有一个记录为止。堆排序是一种不稳定的排序方法,总的时间复杂度为O(nlog2n)。 8.二路归并排序函数的实现 函数声明:void Merge(sqlist a, sqlist b, int low, int mid, int high) void MergePass(sqlist a, sqlist b, int n, int lenth) void MergeSort(sqlist a, int n) 合并排序:这里的合并排序和下边要描述的快速排序都采用了分而治之的思想,但两者仍然有很大差异。合并排序是将一个无序数组n[1…r]分成两个数组n[1…r/2]与n[r/2+1…r],分别对这两个小数组进行合并排序,然后再将这两

文档评论(0)

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

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

1亿VIP精品文档

相关文档