- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构多关键字排序课设报告.doc
目录
设计题目 ……………………………………2
需求分析 ……………………………………2
1.程序设计问题描述…………………………………2
2.基本要求 …………………………………………2
流程图 …………………………………………2
详细设计 ………………………………………3
1.数据结构定义………………………………………4
2.主要算法设计 ……………………………………5
3.函数调用关系图……………………………………8
4.程序主要流程 ……………………………………8
调试分析 ………………………………………13
用户手册 ………………………………………15
测试结果 ………………………………………19
源代码(带注释 )………………………………21
八.参考文献…………………………………………26
一.设计题目
多关键字排序
二.需求分析
1.程序设计问题描述
多关键字的排序有其一定的实用范围。例如:在进行高考分数处理时,除了需对总分进行排序外,不同的专业对单科分数的要求不同,因此尚需在总分相同的情况下,按用户提出的单科分数的次序要求排出考生录取的次序。
2.基本要求
(1)假设待排序的记录数不超过10000,表中记录的关键字数不超过5,各个关键字的范围均为0至100。按用户给定的进行排序的关键字的优先关系,输出排序结果。
(2)约定按LSD法进行多关键字的排序。在对各个关键字进行排序时采用两种策略:其一是利用稳定的内部排序法,其二是利用分配和收集的方法。并综合比较这两种策略。
(3)测试数据由随机数生成器产生。
3.流程图
三.详细设计
本程序是对语文,数学,英语,体育,综合这5门成绩按照此顺序进行优先排序。各科分数为0~100。
由于本实验约定按LSD进行多关键字的排序。在对个关键字进行排序时采用两种策略:其一是利用稳定的内部排序法,其二是利用“分配”和“收集”的方法。所以在一个程序里实现了这两种排序方法。
第一种排序方法由于要使用稳定的排序方法,故参考书上的几种排序方法后,选用了冒泡排序和静态链表存储方式,每一趟排序后,找出最高分 。第二种排序方法利用“分配”与“收集”的基数排序算法,用静态链表存储分数,在一趟排序中,将结点分配到相应的链队列中去,再按从高到低链接起来。
1.数据结构设计
(1)稳定的内部排序法
结构体定义
typedef struct node //定义结构体
{
int key[5]; //数据域
struct node *next; //指针域
}*Score,Lnode;
基本操作
Score RandData(Score L,int n)
初始条件:L为创建的静态链表,代表了一个学生成绩的记录,n为生成的随机数个数。
操作结果:随机生成n个数据并保存到链表L中,返回链表头指针。
Score BubbleSort(Score L)
初始条件:L为创建的静态链表
操作结果:对链表进行冒泡降序排序,返回指针L。
void PrintScore(Score L)
初始条件:L为创建的静态链表。
操作结果:在屏幕上显示链表。
(2)“分配”与“收集”的基数排序
结构体定义
typedef struct node //定义结构体
{
int key[5]; //数据域
struct node *next; //指针域
}*Score,Lnode;
基本操作
Score RadixSort(Score L)
初始条件:L为创建的静态链表,代表了一条学生成绩的记录。
操作结果:对链表L的第n个关键字进行基数排序。
void PrintScore(Score L)
初始条件:L为创建的静态链表。
操作结果:在屏幕上显示链表。
主要算法设计
(1)稳定的内部排序
Score BubbleSort(Score L) //对链表进行冒泡降序排序,返回指针L
{
Score p,q,s,t,N;
int n;
t=(Score)malloc(sizeof(node));
N=(Score)malloc(sizeof(node));
N-next=L-next; //把N指向链表L
L-next=NULL; //L重新指向空
s=L; //创建新的链表L
while(N-next-next)
您可能关注的文档
最近下载
- 成都电子科技大学实验中学新初一均衡分班语文试卷.doc VIP
- 成都电子科技大学实验中学新初一分班数学试卷含答案.doc
- 固体废物热值测定实验.doc VIP
- 14J936变形缝建筑构造.pptx VIP
- ZrO2-III 液晶显示氧化锆氧量分析仪说明书.pdf VIP
- 轻松学中医系列——《药性赋》选讲-曾培杰.docx
- Schneider Electric施耐德EvoPacT™ HVX 12kV真空断路器 全新一代数字化中压配电产品 操作手册安装和用户指南(中文).pdf
- 数控车削加工技术课程思政教学改革实践案例.docx VIP
- KORG科音Pa700快速说明书.pdf
- 2025年6月浙江省杭州市高一地理学考模拟试卷 1 .pdf VIP
文档评论(0)