- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计之排序综合绝对经典各种排序方法
##大学
数据结构课程设计报告
题目: 排序综合
院(系): 计算机工程学院
学生姓名:
班级: 学号:
起讫日期: 2011/06/21-2011/07/01
指导教师:
2010—2011年度 第 2 学期
一、需求分析
1.问题描述:
排序综合,利用随机函数产生20000个随机数,使用多种排序方法进行排序,将排序结果保存在不同的文件中,显示排序结果;利用计时函数统计每个算法所消耗时间,找出其中两种较快的方法,程序的重点是各种排序方法的算法实现过程,同时由于排序的数的个数较大,要考虑到输入输出缓冲区对程序的影响,适时清空输入输出缓冲区;还要注意设置合适的数据存储结构类型,以利于算法实现。
2.基本功能
本设计要实现对20000个数的排序,其中主要包括:利用随机数函数产生20000个数;利用6种排序方法对它们进行排序(快速排序,起泡排序,直接插入排序,归并排序,简单选择排序和堆排序),同时用计时函数统计各个排序方法所耗时间,以找出其中两种最快的;显示排序结果,将各排序方法的排序结果保存在不同的文件(txt格式)中,显示排序结果。
3.输入输出
输入方面,本程序主要是在排序方法的选择上,设置一个类似菜单选择的界面即可;输出方面,本程序数据的个数较多,屏幕输出每隔10个数换行,文件输出中每隔100个数换行。
二、 概要设计
1.设计思路:
利用随机数函数产生20000个随机数,将产生的20000个数放到一个一维数组中,并显示20000个数;设置菜单选项,以选择6种不同的排序方法中的一种进行排序;采用每种排序方法时统计该算法耗时,在屏幕和文件中输出排序结果,之后回到菜单选择界面。拟采用的算法的简介---(1)快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。(2)冒泡排序:首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换之,然后比较第二个记录和第三个记录的关键字;以此类推,直至第n-1个记录和第n个记录的关键字进行过比较为止,结果使得关键字最大的记录被安置到最后一个记录的位置上;然后继续进行直至整个序列有序。(3)直接插入排序:先将序列中的第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列变成关键字非递减有序序列为止,整个排序过程进行n-1趟插入。(4)归并排序:假设初始序列含有n个记录,则可看成是n个有序子序列,每个子序列的长度为1,然后两两归并,得到「n/2」个长度为2或1的有序子序列;在两两归并,......,如此重复,直至得到一个长度为n的有序序列为止。(5)简单选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换之,直至整个序列非递减。(6)堆排序:首先由无序序列建成一个堆,输出堆顶元素后,以堆中最后一个元素替代之,此时根节点的左右子树均为堆,则仅需自上至下进行调整即可,直至所有元素按非递减顺序输出。
2.数据结构设计:
本程序用到了数组和顺序表,相关定义为:
const int MAXSIZE=20000; //顺序表的最大长度
typedef struct{
int key; //关键字项
}RedType; //记录类型
typedef struct{
RedType r[MAXSIZE+1]; //r[0]闲置或用作哨兵
int length; //顺序表长度
}Sqlist; //顺序表类型
typedef Sqlist HeapType; //堆采用顺序表存储表示
采用的数据结构与相应的算法有关,数据结构应利于算法的实现
3.软件结构设计:
模块之间的关系图:
(1).产生20000个随机数并显示过程
int i,j,a[20001];
srand((unsigned)time(NULL));
for(i=1;i20001;i++)
a[i]=rand()%32768;
for(i=1;i20001;i++)
{
coutsetw(6)a[i] ;
if(i%10==0) coutendl;
}
(2).排序方法
①快速排序:
Qsort(L,1,20000);
void Qsort(Sqlist L, int low, int high)
{
int pivotloc;
if (low high)
{
您可能关注的文档
- 人教版三年级语文上册第11课《秋天的雨》.ppt
- 冻干产品的质量管理与风险控制武汉生物制品研究所.ppt
- 企业司机礼仪培训教材.ppt
- 保育员美工活动的技能技巧训练 1 绘画 简笔画在幼儿教育教学中所 .doc
- 六年级生物下册 第三单元 第五章 呼吸作用消耗氧气释放二氧化碳教学课件 鲁科版(五四制).ppt
- 八年级物理第七章 密度与浮力 第八章 压强 第九章 机械与人 第十章 小粒子与大宇宙.doc
- 北师大版四年级数学上册随堂测试同步练习课后作业2017整理每课三份练习.docx
- 地理课件七年级初一大洲和大洋.ppt
- 化学试题分类汇编第四单元物质构成的奥秘.doc
- 四年级上册英语教案-Unit4 My home A let’s spell∣人教版.doc
- 《GB/T 17737.9-2024同轴通信电缆 第9部分:柔软射频同轴电缆分规范》.pdf
- GB/T 17737.9-2024同轴通信电缆 第9部分:柔软射频同轴电缆分规范.pdf
- 中国国家标准 GB/T 17737.9-2024同轴通信电缆 第9部分:柔软射频同轴电缆分规范.pdf
- GB/T 44003-2024力学性能测量 REBCO涂层导体(镀铜)脱层强度测试方法.pdf
- 中国国家标准 GB/T 44021.2-2024音视频及相关设备 功耗测量 第2部分:测试信号和媒介.pdf
- 《GB/T 44021.2-2024音视频及相关设备 功耗测量 第2部分:测试信号和媒介》.pdf
- GB/T 44021.2-2024音视频及相关设备 功耗测量 第2部分:测试信号和媒介.pdf
- GB/T 43962.1-2024动力电池数字化车间集成 第1部分:通用要求.pdf
- 2024广西南宁市江南区教育局面向南宁市公办学校招募中学支教志愿者88人笔试备考试题及答案解析.docx
- 2024广西合浦县山口镇人民政府公开招聘村级防贫监测信息员2人笔试备考试题及答案解析.docx
文档评论(0)