欢迎来到天天文库
浏览记录
ID:1331487
大小:680.50 KB
页数:20页
时间:2017-11-10
《数据结构大型实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、目录一、简介21.1实验内容21.2算法背景2二、算法说明32.1概述32.2关键算法32.2.1相应的项目添加操作及学校的遍历32.2.2查询操作62.2.3快速排序:总分(tpivotIndex),男团(mpivotIndex),女团(wpivotIndex)7三、测试结果83.1全局数据测试83.2局部非法数据测试14四、分析与探讨194.1本系统采用的各算法的时间复杂度分析194.2用链表实现本系统的探究19五、实验心得.......................................................20六、参考文献....
2、...................................................2020一、简介1.1实验内容 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分,3) 可以按学校编号或名称、学校总分、男女团体总
3、分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。5) 数据存入文件并能随时查询6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。请在最后的上交资料中指明你用到的存储结构;1.2算法背景“快速排序法”20采用分而治之方法。它使用一系列递归调用将数据表划分表分为一个个越来越小的子表,划
4、分依据是中心点元素的值。每一步调用都将其处理表中点的元素作为中心值。划分算法执行一系列交换,以便为中心值找到合适的最终位置,左子表的所有元素都小于或等于中心值,而右子表中所有的元素都大于或等于中心值。它的时间复杂度为O(nlog(2)n)。二、算法说明2.1概述本程序中学校的存储结构为链表,Prevschool1next头结点Prevschool(最后)next………………其中school类为:classschool:publicathlete/*学校*/{……public:intcount;/*学校获奖数*/intserial;/*学校编号*/intmens
5、core;/*男选手总分*/intwomenscore;/*女选手总分*/inttotalscore;/*总分*/athleteath[MaxSize];/*获奖运动员信息数组,包括分数,名次,项目*/school*prev;//前指针school*next;//后指针};其中部分主要的函数:添加操作add(school*&head)查询操作checkFunc(school*head,int&n)文件保存save(school*head)总分快速排序tquicksort(vector&v,intfirst,intlast)总分基数排序tbas
6、eSort(vector&v,intd)202.2关键算法2.2.1相应的项目添加操作及学校的遍历20开始输入项目编号temp是数字NY07、st指向表头head{if(first->serial==要添加的编号){(first->ath[first->count]).item=要添加的项目号;(first->ath[first->count]).range=i(名次)First指向的学校的项目加一;更新总分break;}first=first->next;……}202.2.2查询操作while(first!=head){……if(输入的项目编号==学校第i位运动员的项目){把第i位运动员的项目,学校编号、名次、得分信息压入向量;}……}first=first->next;……输出向量中的内容31.8、所有学校总分统计表2.学校成绩查询3.
7、st指向表头head{if(first->serial==要添加的编号){(first->ath[first->count]).item=要添加的项目号;(first->ath[first->count]).range=i(名次)First指向的学校的项目加一;更新总分break;}first=first->next;……}202.2.2查询操作while(first!=head){……if(输入的项目编号==学校第i位运动员的项目){把第i位运动员的项目,学校编号、名次、得分信息压入向量;}……}first=first->next;……输出向量中的内容31.
8、所有学校总分统计表2.学校成绩查询3.
此文档下载收益归作者所有