- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计十种排序算法比较要点解析
合肥学院
计算机科学与技术系
课程设计报告
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],分别对这两个小数组进行合并排序,然后再将这两
您可能关注的文档
- 数据库原理课程设计报告要点解析.doc
- 数据库培训中心信息管理系统课程设计要点解析.doc
- 数据库培训之预处理要点解析.pptx
- 数据库培训高主任要点解析.ppt
- 数据库基本概念要点解析.ppt
- 数据库基础与Access应用表的基本操作(一)要点解析.ppt
- 数据库基础春华第一要点解析.ppt
- 数据库基础知识要点解析.pptx
- 数据库备份与恢复实验要点解析.doc
- 数据库实验二要点解析.doc
- 中国国家标准 GB 10395.6-2025农业机械 安全 第6部分:植物保护机械.pdf
- GB 10395.6-2025农业机械 安全 第6部分:植物保护机械.pdf
- GB 10395.7-2025农业机械 安全 第7部分:联合收割机、饲料收获机、棉花收获机和甘蔗收获机.pdf
- 中国国家标准 GB 10395.7-2025农业机械 安全 第7部分:联合收割机、饲料收获机、棉花收获机和甘蔗收获机.pdf
- 《GB 10395.7-2025农业机械 安全 第7部分:联合收割机、饲料收获机、棉花收获机和甘蔗收获机》.pdf
- GB/T 42076.2-2025生物技术 细胞计数 第2部分:量化计数方法性能的实验设计与统计分析.pdf
- 中国国家标准 GB/T 42076.2-2025生物技术 细胞计数 第2部分:量化计数方法性能的实验设计与统计分析.pdf
- 《GB/T 42076.2-2025生物技术 细胞计数 第2部分:量化计数方法性能的实验设计与统计分析》.pdf
- GB/T 46735.1-2025高温蓄电池 第1部分:一般要求.pdf
- 《GB/T 46735.1-2025高温蓄电池 第1部分:一般要求》.pdf
最近下载
- 《作业治疗学》课程考试复习题库(含答案).docx VIP
- 部编版小学六年级语文上册 期末全真模拟卷(重点小学)【含答案】.pdf VIP
- 作业治疗学考试题库带答案.doc VIP
- 工程监理方案技术标.docx
- 2024中小学生网络安全知识竞赛题库及答案.docx VIP
- PEP小学英语小学六年级上册期末试卷(含答案).pdf VIP
- NB_T 47014-2023承压设备焊接工艺评定.pdf VIP
- 广东深深圳市深圳中学2025届语文高一第二学期期末教学质量检测模拟试题含解析.doc VIP
- 广东深深圳市深圳中学2025年高一下语文期末统考模拟试题含解析.doc VIP
- 肩关节镜下肩袖修补术手术配合.pptx VIP
原创力文档


文档评论(0)