- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验七 查找、排序的应用
一、实验目的
1、本实验可以使学生更进一步巩固各种查找和排序的基本知识。
2、学会比较各种排序与查找算法的优劣。
3、学会针对所给问题选用最适合的算法。
4、掌握利用常用的排序与选择算法的思想来解决一般问题的方法和技巧。
二、实验内容
[问题描述]
对学生的基本信息进行管理。
[问题分析]
设计一个学生信息管理系统,学生对象至少要包含:学号、姓名、性别、成绩 1、成绩 2、总成绩等信息。要求实现以下功能:
总成绩要求自动计算;
查询:分别给定学生学号、姓名、性别,能够查找到学生的基本信息( 要求至少用两种查找算法实现);
排序:分别按学生的学号、成绩 1、成绩 2、总成绩进行排序(要求至少用两种排序算法实现)。
[算法设计]
//顺序查找
int seqsearch(recordlist * l,int k)
{
int i=l-length ;
while(i=1l-r[i].key!=k) i--; if(i=1)
{
cout存在该元素:l-r[i].keyendl; cout该元素所在位置:iendl; return(i);
}
else
{
cout不存在该元素!endl; return(0);
}
}
//折半查找
int binsrch(recordlist * l,int k)
{
int low=1,high=l-length,mid; while(low=high)
{
mid=(low+high)/2; if(k==l-r[mid].key)
{
cout存在该元素:l-r[mid].keyendl; cout该元素所在位置:midendl; return(1);
}
else if(kl-r[mid].key) high=mid-1;
else
low=mid+1;
}
cout查找失败!endl; return(0);
}
//冒泡排序
void bubblesort(recordlist * l)
{
int i,j,x;
int change=TRUE; for(i=1;i=l-length ;++i)
{
for(j=1;j=l-length-i;++j)
if(l-r[j].keyl-r[j+1].key)
{
x=l-r[j].key;
l-r[j].key=l-r[j+1].key ; l-r[j+1].key=x;
}
}
for(int m=1;m=l-length;m++) coutl-r[m].key ;
coutendl;
}
//快速排序
int qkpass(recordlist * l,int left,int right)
{
int x=l-r[left].key; int low=left;
int high=right; while(lowhigh)
{
while(lowhigh l-r[high].key =x) high--;
if(lowhigh)
{
l-r[low].key =l-r[high].key ; low++;
}
while(lowhigh l-r[high].keyx) low++;
if(lowhigh)
{
l-r[high].key=l-r[low].key; high--;
}
}
l-r[low].key=x; return low;
}
void qksort(recordlist *l,int low,int high)
{
int pos; if(lowhigh)
{
pos=qkpass(l,low,high); qksort(l,low,pos-1); qksort(l,pos+1,high);
}
}
[测试数据]
[总结]
对于本次试验我想我有很大的收获,本次试验我用来顺序查找和折半查找两种查找方式,这两种查找方式各有优缺点。顺序查找的查找过程为:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录;反之,若直至第一个记录,其关键字和给定值比较都不相等,则表明表中没有所查的记录,查找不成功;折半查找的查找过程是:先确定待查记录所在的范围,然后逐步缩小范围直到找到或找不到该记录为止。排序主要用冒泡排序和快速排序。本实验主要就是对排序和查找的基本应用,同时也增加了我们对于这些算法的熟悉和理解。
原创力文档


文档评论(0)