- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
HUNANUNIVERSITY
课程实验报告
题目:快速排序
学生姓名
学生学号
专业班级
指导老师 李晓鸿
完成日期 2015年1月7日
一、需求分析
1.程序的功能
由用户输入任务件数和任务时间,使用快速排序,输出使得所有任务等待时间最小的序列。
2.输入的形式
本程序由用户输入任务总数以及每个任务所花时间,中间用空格或换行隔开,任务总数必须为正整数。
请输入任务总数:
请输入各个任务所花时间:
3.输出形式
在对这些任务所花时间进行快速排序后,将这些数据从小到大输出任务时间。
任务所花时间的排序如下:
4.测试数据
1.请输入任务总数:
9
请输入各个任务所花时间:
534261573
任务所花时间从小到大的排序如下:
123345567
请输入任务总数:
10
请输入各个任务所花时间:
6512354861
任务所花时间从小到大的排序如下:
1123455668
请输入任务总数:
6
请输入各个任务所花时间:
10101945235
任务所花时间从小到大的排序如下:
51010192345
请输入任务总数:
8
请输入各个任务所花时间:
87654321
任务所花时间从小到大的排序如下:
12345678
请输入任务总数:
10
请输入各个任务所花时间:
24681012142615
任务所花时间从小到大的排序如下:
01246812141526
二、概要设计
1.抽象数据类型
将每一个元素储存在一个有序并且有限的序列中,每一个元素都有一个自己的位置,也都有一个数据类型,所以使用线性表来储存各个任务所花的时间。
ADT
ADTalist
{
数据对象:定义线性表的最大储存元素maxsize;
当前储存元素数listsize;
数据关系:若listsize=0,则线性表没有元素,为空;
基本操作:alist(intn)//构造函数
~alist()//析构函数
boolappend(inta)//增加元素
}
3.算法的基本思想
设要排序的线性表中元素是A[0]……A[N-1],首先通过时间函数余作为关键数据piot,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,通过前后指针的移动,实现快速排序。再将piot值左右两边的线性表进行快速排序,直到需要快速排序的线性表只有1个元素。
4.程序基本流程
程序分为三个模块:
输入模块:由用户读入任务总数n以及各个任务所花时间;
排序模块:对这些时间进行快速排序;
输出模块:输出排序后的序列。
三.详细设计
1.物理数据类型
由于线性表长度已知,并且进行大量的交换操作,所以使用顺序表来实现。
顺序表的伪代码
classalist
{
public:
intmaxsize;
intlistsize;
int*listarry;
alist(intn)
{
maxsize=n;
listsize=0;
listarry=newint[maxsize];
}
~alist()
{
delete[]listarry;
}
boolappend(inta)
{
if(listsize==maxsize)returnfalse;
listarry[listsize++]=a;
returntrue;
}};
详细设计
获取piot值——partation——quicksort
获取piot值:获取随机数,通过随机数获得piot值。为了防止随机数大于所有数,对随机数就行求余,对求余后的值加1(防止左边界为0,右边界为1的情况,(r+l)/2==0).
intfindpiot(inta,intb)
{
srand(time(0));
intn=rand()%((a+b)/2+1);
returnn;
}
partation(划分):开始参数l.r紧挨要分割子线性表的实际
您可能关注的文档
- 【会计实操经验】财务报表都有哪些用途?构成内容及分类是怎样的?.pdf
- 土木工程知识点-把握这四个细节-打造精品砌体工程.doc
- 公司拖欠工资怎么处理-有哪些法律后果-【推荐】.doc
- 财税实务:两免三减半的概念解析.pdf
- 村主任年度述职报告.pdf
- 财税实务:法人合伙人纳税地点的确定.pdf
- 【重要知识点】2018司考行政法知识点:民事、行政司法赔偿范围.doc
- 【税会实务】酒店岗位职责:往来账会计.doc
- 【热荐】公司合并证明怎么写?.doc
- 对大学生礼仪常识认识的调查.pdf
- 原电池电动势的测定实验报告.pdf
- 与业主、设计、总包、监理和他承包人的配合措施.pdf
- 公司管理流程.pptx
- 2024_2025学年新教材高中地理第1章地球的运动素养综合训练新人教版选择性必修1.doc
- 2024_2025学年新教材高中地理第3章大气的运动第1节常见天气系统第1课时锋与天气分层作业新人教版选择性必修1.doc
- 2024_2025学年新教材高中地理第1章地球的运动第2节地球运动的地理意义第4课时正午太阳高度的变化四季更替和五带划分分层作业课件新人教版选择性必修1.pptx
- 2024_2025学年新教材高中地理第2章地表形态的塑造第2节构造地貌的形成第1课时地质构造与地貌课件新人教版选择性必修1.pptx
- 2024_2025学年新教材高中地理第1章地球的运动问题研究人类是否需要人造月亮课件新人教版选择性必修1.pptx
- 五片小雪花课件.pdf
- 2024_2025学年新教材高中地理第3章大气的运动第2节气压带和风带第1课时气压带和风带的形成分层作业课件新人教版选择性必修1.pptx
文档评论(0)